script make example create linux centos centos6 daemons

linux - make - Ejecute el script bash como daemon



do a bash script (4)

Tengo un script, que ejecuta mi script PHP cada X veces:

#!/bin/bash while true; do /usr/bin/php -f ./my-script.php echo "Waiting..." sleep 3 done

¿Cómo puedo comenzar como daemon?


Otro truco genial es ejecutar funciones o subcapas en segundo plano, aunque no siempre es factible

name(){ echo "Do something" sleep 1 } # put a function in the background name & #Example taken from here #https://bash.cyberciti.biz/guide/Putting_functions_in_background

Ejecutando una subshell en el fondo

(echo "started"; sleep 15; echo "stopped") &


Para ejecutarlo como un daemon completo desde un shell, necesitarás usar setsid y redirigir su salida. Puede redirigir la salida a un archivo de registro, o a /dev/null para descartarlo. Suponiendo 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 el resultado en un archivo de registro, reemplace el primer /dev/null con su / path / to / logfile.

Tienes que redirigir el resultado, de lo contrario no se ejecutará como un daemon verdadero (dependerá de tu shell para leer y escribir el resultado).


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

Puede duplicarlo y luego ingresar su script bajo 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, Linux Mint, distros, etc.]

La manera simple:

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

sudo nano /etc/rc.local

Agregue lo siguiente y guárdelo:

#For a BASH script /bin/sh TheNameOfYourScript.sh > /dev/null &

La mejor forma de hacerlo sería crear un Daemon mediante Upstart:

sudo nano /etc/init/TheNameOfYourDaemon.conf

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

Confirma que se ve bien:

init-checkconf /etc/init/TheNameOfYourDaemon.conf

Ahora reinicia la máquina:

sudo reboot

Ahora cuando inicie 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á y luego comenzará 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