GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecutar script bash como demonio

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


Linux
  1. ¿Cómo depurar un script Bash?

  2. ¿La secuencia de comandos Init.d no se ejecuta en el arranque?

  3. Ejecute el script php como proceso daemon

  4. Ejecute el script bash después de iniciar sesión

  5. ¿Cómo ejecutar un script bash a través de una ruta absoluta?

Cómo ejecutar un script Bash {7 métodos}

35 ejemplos de secuencias de comandos Bash

Cómo ejecutar Shell Script como servicio SystemD en Linux

demonio idmapd

Cómo ejecutar un script Bash

¿Script al inicio?