Saltar al contenido

Ejecutar script bash como demonio

Ya no necesitas investigar más por todo internet porque has llegado al espacio perfecto, contamos con la respuesta que necesitas sin complicarte.

Solución:

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 primero /dev/null con su /ruta/al/archivo de registro.

Tienes que redirigir la salida, de lo contrario no se ejecutará como un true daemon (dependerá de su shell para leer y escribir la salida).

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...

[The below bash code is for Debian systems - Ubuntu, Linux Mint distros and so on]

La forma sencilla:

La forma más sencilla sería editar su archivo /etc/rc.local y luego hacer que su script se ejecute desde allí (es decir, cada vez que inicie el sistema):

sudo nano /etc/rc.local

Agregue lo siguiente y guarde:

#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

detener: esto detendrá un servicio, si se está ejecutando

sudo service TheNameOfYourDaemonstop stop

estado: esto mostrará el estado de un servicio

sudo service TheNameOfYourDaemonstatus status

Puede ir a /etc/init.d/ - verá una plantilla de daemon llamada skeleton.

Puede duplicarlo y luego ingresar su script en la función de inicio.

Si sostienes alguna desconfianza y disposición de limar nuestro sección te sugerimos realizar un exégesis y con mucho placer lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *