Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Linux: process into a service

I am trying to make a linux executable as a service

I execute my program like this below

java -jar mytestprogram.jar 

creates a process that runs continuously and serves REST requests. But I want to run it as a service where I can do

service mytestprogram start service mytestprogram stop service mytestprogram status chkconfig mytestprogram on 

etc. What is the most simple way of doing it?

like image 665
yalkris Avatar asked Mar 11 '14 20:03

yalkris


People also ask

What is difference between process and service in Linux?

A process is simply an application or a script which can be running in the foreground or the background. Service is a command which allows you start, stop or restart services running in the background.

What is service Linux?

Linux Services A service is a program that runs in the background outside the interactive control of system users as they lack an interface. This in order to provide even more security, because some of these services are crucial for the operation of the operating system.


2 Answers

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 INFO  DESC="test script" NAME=testone #DAEMON=  do_start() {    echo "starting!"; }  do_stop() {    echo "stopping!" }   case "$1" in    start)      do_start      ;;    stop)      do_stop      ;; esac  exit 0 

I suggest you to look some scripts in that directory, It's simple if you know bash a little ;)

like image 90
SpectralWave Avatar answered Sep 25 '22 22:09

SpectralWave


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  # Variables PGREP=/usr/bin/pgrep JAVA=/usr/bin/java ZERO=0  # Start the MATH start() {     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 MATH stop() {     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 MATH status() {     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 logic case "$1" in     start)         start         ;;     stop)         stop         ;;     status)         status         ;;     restart|reload)         stop         start         ;;   *)     echo $"Usage: $0 {start|stop|status|restart|reload}"     exit 1 esac exit 0 
like image 32
MathOliveira Avatar answered Sep 26 '22 22:09

MathOliveira