Puede ir a /etc/init.d/ - verá una plantilla de daemon llamada skeleton.
Puede duplicarlo y luego ingresar su secuencia de comandos en la función de inicio.
Un Daemon es solo un programa que se ejecuta como un proceso en segundo plano, en lugar de estar bajo el control directo de un usuario interactivo...
[El siguiente código bash es para sistemas Debian:Ubuntu, distribuciones Linux Mint, etc.]
La manera simple:
La forma más sencilla sería editar su archivo /etc/rc.local y luego hacer que su secuencia de comandos se ejecute desde allí (es decir, cada vez que inicie el sistema):
sudo nano /etc/rc.local
Agrega lo siguiente y guarda:
#For a BASH script
/bin/sh TheNameOfYourScript.sh > /dev/null &
La mejor manera de hacer esto sería crear un Daemon a través de Upstart:
sudo nano /etc/init/TheNameOfYourDaemon.conf
agrega lo siguiente:
description "My Daemon Job"
author "Your Name"
start on runlevel [2345]
pre-start script
echo "[`date`] My Daemon Starting" >> /var/log/TheNameOfYourDaemonJobLog.log
end script
exec /bin/sh TheNameOfYourScript.sh > /dev/null &
Guarda esto.
Confirme que se ve bien:
init-checkconf /etc/init/TheNameOfYourDaemon.conf
Ahora reinicie la máquina:
sudo reboot
Ahora, cuando inicia su sistema, puede ver el archivo de registro que indica que su Daemon se está ejecutando:
cat /var/log/TheNameOfYourDaemonJobLog.log
• Ahora puede iniciar/detener/reiniciar/obtener el estado de su Daemon a través de:
reiniciar:esto se detendrá, luego iniciará un servicio
sudo service TheNameOfYourDaemonrestart restart
start:esto iniciará un servicio, si no se está ejecutando
sudo service TheNameOfYourDaemonstart start
stop:esto detendrá un servicio, si se está ejecutando
sudo service TheNameOfYourDaemonstop stop
estado:esto mostrará el estado de un servicio
sudo service TheNameOfYourDaemonstatus status
Para ejecutarlo como un demonio completo desde un shell, deberá usar setsid
y redirigir su salida. Puede redirigir la salida a un archivo de registro o a /dev/null
para descartarlo. Asumiendo que su script se llama myscript.sh, use el siguiente comando:
setsid myscript.sh >/dev/null 2>&1 < /dev/null &
Esto separará completamente el proceso de su shell actual (stdin, stdout y stderr). Si desea mantener la salida en un archivo de registro, reemplace el primer /dev/null
con su /ruta/al/archivo de registro.
Debe redirigir la salida, de lo contrario, no se ejecutará como un verdadero demonio (dependerá de su shell para leer y escribir la salida).