4 votes

Utilisation de upstart pour les tâches non-daemon

J'aimerais avoir foo do-startup-things s'exécutent au démarrage, et foo do-shutdown-things exécuter sur l'arrêt où foo est mon propre programme.

Il semble que Upstart soit un bon candidat pour faire cela, mais Upstart semble être conçu pour être utilisé avec des démons, donc en exécutant service foo stop donne l'erreur stop: Unknown instance: car le processus exécuté lors de l'exécution de la tâche de démarrage n'est plus en cours d'exécution.

Existe-t-il un moyen d'utiliser Upstart pour exécuter des tâches au démarrage et à l'arrêt sans lancer un démon ?

6voto

Bvandorp Points 11

Oui, c'est possible. Vous devez définir deux tâches de travail, voici un exemple :

Créez d'abord startTaskJob.conf :

# startTaskJob - 
#
# This service print "script start" and end 
description "print script start"
start on runlevel [2345]

task
console log
script
  exec  echo "script start"
end script

Vous pouvez le tester avec :

sudo start startTaskJob

et la sortie sera enregistrée dans /var/log/upstart/startTaskJob.log

que de créer stopTaskJob.conf :

# stopTaskJob - 
#
# This service print "script stop" and end 
description "print script stop"
start on runlevel [016]

task
console log
script
  exec  echo "script stop"
end script

Ce script sera exécuté chaque fois que le système entrera en runlevel 0, 1 ou 6. A l'arrêt runlevel devient 0 et le processus d'init upstart l'exécutera à cause de " démarrage au niveau d'exécution [016] ".

Vous pouvez le tester :

sudo start stopTaskJob

UPDATE : Voici un exemple de la manière de procéder dans un seul fichier.

# taskJob - 
#
# This service print environment variable 
# start on runlevel 
description "print environment variable"
start on runlevel [0123456]
task
console log
script
if [ "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" -o "$RUNLEVEL" = "6" ]; then
    exec  echo "(stopTask) $UPSTART_EVENTS - $RUNLEVEL - job $UPSTART_JOB" 
else
    exec  echo "(startTask) $UPSTART_EVENTS - $RUNLEVEL - job $UPSTART_JOB"
fi
end script

Je l'ai testé sur lubuntu 12.04 et c'est le cas. /var/log/upstart/taskJob.log le contenu après le redémarrage :

(stopTask) runlevel - 6 - job taskJob
(startTask) runlevel - 2 - job taskJob

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X