Running a Linux script for a Java application

I have a jar file for working on Linux with this command:

java -jar SyslogAgent_01.jar 192.168.2.154 1998 D:/apachelog.log ApacheLog 13 

Can someone let me know how to create a script and implement this process automatically when we restart our computer? On Windows we use services, but what about Linux? Can you provide me with a script and do it since I'm really new to Linux ...

Linux: RHat, Ubuntu

thanks

+1
source share
6 answers

If you want to run the application as a demonstration of linux daemon (service) Java Wrapper: http://wrapper.tanukisoftware.com/doc/english/download.jsp

Also check this answer (for Windows, but not much for Linux changes): How to install a Java application as a service

+2
source

While things like this are not recommended, this can be done as follows:

 sudo crontab -e 

Put the following in cron:

 @reboot java -jar SyslogAgent_01.jar 192.168.2.154 1998 D:/apachelog.log ApacheLog 13 
+1
source

I would start with this template to run the script, rename SCRIPT_HOME to the correct path and call this file without any extensions, then run this command in SSH.

 chkconfig –add javaserver 

Please note that javaserver in chkconfig is how you called the file below (no extensions or it will not work).

 #!/bin/bash # # javaserver: Startup script for Any Server Application. # # chkconfig: 35 80 05 # description: Startup script for Any Server Application. SCRIPT_HOME=/var/java_server; export SCRIPT_HOME start() { echo -n "Starting Java Server: " $SCRIPT_HOME/run.sh start sleep 2 echo "done" } stop() { echo -n "Stopping Java Server: " $SCRIPT_HOME/run.sh stop echo "done" } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: javaserver {start|stop|restart}" exit esac 

Now here is the script run.sh (this can be used instead of the template, but it’s easier for me to make the script template a small and immutable link to my main script, so I will never have to touch it again.

Below is the script, one of the very few scripts that, in my opinion, can restart the java program without shutting down all the java programs that you are currently running, it is only intended for the program that it opened in the first place, therefore never would make no mistakes, would never work for me, run as root without problems.
Runs your program in the background forever (no need to keep SSH open).

This is run.sh

 #!/bin/bash # # chkconfig: 345 99 05 # description: Java deamon script # # A non-SUSE Linux start/stop script for Java daemons. # # Set this to your Java installation JAVA_HOME=/usr/bin/ scriptFile=$(readlink -fn $(type -p $0)) # the absolute, dereferenced path of this script file scriptDir=$(dirname $scriptFile) # absolute path of the script directory serviceNameLo="javaserver" # service name with the first letter in lowercase serviceName="JavaServer" # service name serviceUser="root" # OS user name for the service serviceGroup="root" # OS group name for the service applDir="/var/java_server" # home directory of the service application serviceUserHome="/home/$serviceUser" # home directory of the service user serviceLogFile="/var/log/$serviceNameLo.log" # log file for StdOut/StdErr maxShutdownTime=15 # maximum number of seconds to wait for the daemon to terminate normally pidFile="/var/run/$serviceNameLo.pid" # name of PID file (PID = process ID number) javaCommand="java" # name of the Java launcher without the path javaArgs="MyJavaAppClass" # arguments for Java launcher javaCommandLine="$JAVA_HOME$javaCommand $javaArgs" # command line to start the Java service application javaCommandLineKeyword="MyJavaAppClass" # a keyword that occurs on the commandline, used to detect an already running service process and to distinguish it from others # Makes the file $1 writable by the group $serviceGroup. function makeFileWritable { local filename="$1" touch $filename || return 1 chgrp $serviceGroup $filename || return 1 chmod g+w $filename || return 1 return 0; } # Returns 0 if the process with PID $1 is running. function checkProcessIsRunning { local pid="$1" if [ -z "$pid" -o "$pid" == " " ]; then return 1; fi if [ ! -e /proc/$pid ]; then return 1; fi return 0; } # Returns 0 if the process with PID $1 is our Java service process. function checkProcessIsOurService { local pid="$1" if [ "$(ps -p $pid --no-headers -o comm)" != "$javaCommand" ]; then return 1; fi grep -q --binary -F "$javaCommandLineKeyword" /proc/$pid/cmdline if [ $? -ne 0 ]; then return 1; fi return 0; } # Returns 0 when the service is running and sets the variable $pid to the PID. function getServicePID { if [ ! -f $pidFile ]; then return 1; fi pid="$(<$pidFile)" checkProcessIsRunning $pid || return 1 checkProcessIsOurService $pid || return 1 return 0; } function startServiceProcess { cd $applDir || return 1 rm -f $pidFile makeFileWritable $pidFile || return 1 makeFileWritable $serviceLogFile || return 1 cmd="nohup $javaCommandLine >>$serviceLogFile 2>&1 & echo \$! >$pidFile" # Don't forget to add -H so the HOME environment variable will be set correctly. #sudo -u $serviceUser -H $SHELL -c "$cmd" || return 1 su --session-command="$javaCommandLine >>$serviceLogFile 2>&1 & echo \$! >$pidFile" $serviceUser || return 1 sleep 0.1 pid="$(<$pidFile)" if checkProcessIsRunning $pid; then :; else echo -ne "\n$serviceName start failed, see logfile." return 1 fi return 0; } function stopServiceProcess { kill $pid || return 1 for ((i=0; i<maxShutdownTime*10; i++)); do checkProcessIsRunning $pid if [ $? -ne 0 ]; then rm -f $pidFile return 0 fi sleep 0.1 done echo -e "\n$serviceName did not terminate within $maxShutdownTime seconds, sending SIGKILL..." kill -s KILL $pid || return 1 local killWaitTime=15 for ((i=0; i<killWaitTime*10; i++)); do checkProcessIsRunning $pid if [ $? -ne 0 ]; then rm -f $pidFile return 0 fi sleep 0.1 done echo "Error: $serviceName could not be stopped within $maxShutdownTime+$killWaitTime seconds!" return 1; } function startService { getServicePID if [ $? -eq 0 ]; then echo -n "$serviceName is already running"; RETVAL=0; return 0; fi echo -n "Starting $serviceName " startServiceProcess if [ $? -ne 0 ]; then RETVAL=1; echo "failed"; return 1; fi echo "started PID=$pid" RETVAL=0 return 0; } function stopService { getServicePID if [ $? -ne 0 ]; then echo -n "$serviceName is not running"; RETVAL=0; echo ""; return 0; fi echo -n "Stopping $serviceName " stopServiceProcess if [ $? -ne 0 ]; then RETVAL=1; echo "failed"; return 1; fi echo "stopped PID=$pid" RETVAL=0 return 0; } function checkServiceStatus { echo -n "Checking for $serviceName: " if getServicePID; then echo "running PID=$pid" RETVAL=0 else echo "stopped" RETVAL=3 fi return 0; } function main { RETVAL=0 case "$1" in start) # starts the Java program as a Linux service startService ;; stop) # stops the Java program service stopService ;; restart) # stops and restarts the service stopService && startService ;; status) # displays the service status checkServiceStatus ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac exit $RETVAL } main $1 
+1
source

First, you can edit your local IP address to find out more about what you are issuing. Anyway, just enter a new document type

  #!/bin/bash #put your commands in here 

Save, then open a terminal and enter chmod + x nameofscript

I'm not sure about ubuntu, but on the arch we have a place to run commands at startup. My advice is to go to the system -> preferably -> launch applications or something in this direction in this menu that I know.

Enter the path to the script i.e. / Home / username / scrips / myawesomescript

0
source

Basically, you need to create a small shell script in /etc/init.d and make symbolic links to / etc / rc 2.d and / etc / rc5.d. The content may be as follows:

 #!/bin/sh if [ "$1" = start ] ; then cd /put_your_workdir_here /usr/bin/java -jar SyslogAgent_01.jar 192.168.2.154 1998 D:/apachelog.log ApacheLog 13 & fi 

Note that you run your program in the background (& at the end of the command line)

0
source

you need to create a unix shell script file that will automate the work for you. Below are the steps to create a script file: http://www.linuxquestions.org/questions/linux-general-1/shell-script-for-jar-utility-769461/

0
source

Source: https://habr.com/ru/post/914950/


All Articles