Linux: process into a service
That depends on your system manager
the most common way to do that on debian/ubuntu is to build an initscript and place it in /etc/init.d
or /etc/rc/init.d
and place a script named mytestprogram
in that.
this is an example initscript:
#!/bin/sh### BEGIN INIT INFO# Provides: testone# Required-Start: $local_fs# Required-Stop: $local_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# X-Interactive: false# Short-Description: Example init script# Description: Start/stop an example script### END INIT INFODESC="test script"NAME=testone#DAEMON=do_start(){ echo "starting!";}do_stop(){ echo "stopping!"}case "$1" in start) do_start ;; stop) do_stop ;;esacexit 0
I suggest you to look some scripts in that directory, It's simple if you know bash a little ;)
Here is a sample shell script (make sure you replace the MAT name with the name of the your application):
I create one GitHubGist with the latest version of my script and a brief explanation to help those who need it. GitHub Gist link
#!/bin/bash### BEGIN INIT INFO# Provides: MATH# Required-Start: $java# Required-Stop: $java# Short-Description: Start and stop MATH service.# Description: -# Date-Creation: -# Date-Last-Modification: -# Author: -### END INIT INFO# VariablesPGREP=/usr/bin/pgrepJAVA=/usr/bin/javaZERO=0# Start the MATHstart() { echo "Starting MATH..." #Verify if the service is running $PGREP -f MATH > /dev/null VERIFIER=$? if [ $ZERO = $VERIFIER ] then echo "The service is already running" else #Run the jar file MATH service $JAVA -jar /opt/MATH/MATH.jar > /dev/null 2>&1 & #sleep time before the service verification sleep 10 #Verify if the service is running $PGREP -f MATH > /dev/null VERIFIER=$? if [ $ZERO = $VERIFIER ] then echo "Service was successfully started" else echo "Failed to start service" fi fi echo}# Stop the MATHstop() { echo "Stopping MATH..." #Verify if the service is running $PGREP -f MATH > /dev/null VERIFIER=$? if [ $ZERO = $VERIFIER ] then #Kill the pid of java with the service name kill -9 $($PGREP -f MATH) #Sleep time before the service verification sleep 10 #Verify if the service is running $PGREP -f MATH > /dev/null VERIFIER=$? if [ $ZERO = $VERIFIER ] then echo "Failed to stop service" else echo "Service was successfully stopped" fi else echo "The service is already stopped" fi echo}# Verify the status of MATHstatus() { echo "Checking status of MATH..." #Verify if the service is running $PGREP -f MATH > /dev/null VERIFIER=$? if [ $ZERO = $VERIFIER ] then echo "Service is running" else echo "Service is stopped" fi echo}# Main logiccase "$1" in start) start ;; stop) stop ;; status) status ;; restart|reload) stop start ;; *) echo $"Usage: $0 {start|stop|status|restart|reload}" exit 1esacexit 0
In Ubuntu you can create the file as explained above with few lines, play around and see if it works for you.
description "My prog" start on (net-device-up and local-filesystems and runlevel [2345])stop on runlevel [!2345] respawnrespawn limit 10 5 setuid rootsetgid shnmon script /usr/local/bin/my_script -config.path /etc/myprog/yourconfig.xyz -children false >> /var/log/myprog.log 2>&1end script
The "-config.path /etc/myprog/yourconfig.xyz" is optional incase you have a config file.
You can just edit the script part and test it and keep others default and edit the rest along the way