Cómo crear un servicio en linux

En ocasiones necesitamos que una aplicación que hayamos creado se inicie como un demonio de Linux. Para ello hemos de hacer lo siguiente:

  • Crearemos un achivo en la siguiente ruta:
/etc/init.d/nombre_servicio
  • El contenido del archivo sería:
nombre_servicio
#! /bin/sh
 
NAME=nombre_servicio
DESC="Demonio del nombre_servicio"
PIDFILE="/var/run/${NAME}.pid"
LOGFILE="/var/log/${NAME}.log"
 
#indicamos que vamos a ejecutar un archivo PHP
DAEMON="/usr/bin/php"
#Ruta del archivo
DAEMON_OPTS="/var/www/myproject/myscript.php"
 
START_OPTS="--start --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} ${DAEMON_OPTS}"
STOP_OPTS="--stop --pidfile ${PIDFILE}"
 
test -x $DAEMON || exit 0
 
set -e
 
case "$1" in
    start)
        echo -n "Starting ${DESC}: "
        start-stop-daemon $START_OPTS >> $LOGFILE
        echo "$NAME."
        ;;
    stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon $STOP_OPTS
        echo "$NAME."
        rm -f $PIDFILE
        ;;
    restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon $STOP_OPTS
        sleep 1
        start-stop-daemon $START_OPTS >> $LOGFILE
        echo "$NAME."
        ;;
    *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac
 
exit 0
  • Donde tendremos que cambiar el contenido de las líneas siguientes, para ajustarlo a nuestras necesidades.
    • NAME
    • DESC
    • DAEMON
    • DAEMON_OPTS
  • Una vez creado el archivo con el contenido mencionado anteriormente, tendremos que darle permisos de ejecución (0755).
chmod +x /etc/init.d/nombre_servicio
  • Tras éstos pasos ya podremos usar los siguientes comandos:
sudo service nombre_servicio start
sudo service nombre_servicio restart
sudo service nombre_servicio stop

NOTA: Si no se usa SUDO puede no funcionar correctamente, según el usuario que lo trate de ejecutar.

Agradecimiento a la Fuente Original.


Navegación

Software de programación

Ayuda al servidor