GNU/Linux >> Tutoriels Linux >  >> Linux

Exécuter le script bash en tant que démon

Vous pouvez aller à /etc/init.d/ - vous verrez un modèle de démon appelé squelette.

Vous pouvez le dupliquer puis entrer votre script sous la fonction de démarrage.


Un démon est juste un programme qui s'exécute en arrière-plan, plutôt que d'être sous le contrôle direct d'un utilisateur interactif...

[Le code bash ci-dessous est destiné aux systèmes Debian - Ubuntu, distributions Linux Mint, etc.]

Le moyen le plus simple :

Le moyen le plus simple serait de modifier votre fichier /etc/rc.local, puis d'exécuter votre script à partir de là (c'est-à-dire à chaque démarrage du système) :

sudo nano /etc/rc.local

Ajoutez ce qui suit et enregistrez :

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

La meilleure façon de procéder serait de créer un démon via Upstart :

sudo nano /etc/init/TheNameOfYourDaemon.conf

ajoutez ce qui suit :

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 &

Enregistrez ceci.

Confirmez que tout semble correct :

init-checkconf /etc/init/TheNameOfYourDaemon.conf

Redémarrez maintenant la machine :

sudo reboot

Désormais, lorsque vous démarrez votre système, vous pouvez voir le fichier journal indiquant que votre démon est en cours d'exécution :

cat  /var/log/TheNameOfYourDaemonJobLog.log

• Vous pouvez maintenant démarrer/arrêter/redémarrer/obtenir l'état de votre démon via :

redémarrer :cela s'arrêtera, puis démarrera un service

sudo service TheNameOfYourDaemonrestart restart

démarrer :cela démarrera un service, s'il n'est pas en cours d'exécution

sudo service TheNameOfYourDaemonstart start

stop :cela arrêtera un service, s'il est en cours d'exécution

sudo service TheNameOfYourDaemonstop stop

statut :ceci affichera le statut d'un service

sudo service TheNameOfYourDaemonstatus status

Pour l'exécuter en tant que démon complet à partir d'un shell, vous devrez utiliser setsid et rediriger sa sortie. Vous pouvez rediriger la sortie vers un fichier journal ou vers /dev/null pour le jeter. En supposant que votre script s'appelle myscript.sh, utilisez la commande suivante :

setsid myscript.sh >/dev/null 2>&1 < /dev/null &

Cela détachera complètement le processus de votre shell actuel (stdin, stdout et stderr). Si vous souhaitez conserver la sortie dans un fichier journal, remplacez le premier /dev/null avec votre /chemin/vers/fichierjournal.

Vous devez rediriger la sortie, sinon elle ne fonctionnera pas comme un vrai démon (cela dépendra de votre shell pour lire et écrire la sortie).


Linux
  1. Le script Init.d n'est pas exécuté au démarrage ?

  2. Comment faire fonctionner un script Python comme un service ou un démon sous Linux

  3. Exécuter le script php en tant que processus démon

  4. Comment faire fonctionner le script Python en tant que service ?

  5. Autorisation refusée avec bash.sh pour exécuter cron

Comment exécuter un script bash {7 méthodes}

35 exemples de scripts bash

Comment exécuter un script Shell en tant que service SystemD sous Linux

démon idmapd

Comment exécuter un script bash

Script au démarrage ?