web-dev-qa-db-fra.com

Exécuter des commandes au démarrage dans 11.10

Je ne comprends donc pas bien comment créer un script de démarrage sur mon serveur Ubuntu 11.10. J'ai lu sur init- scripts, upstart- emplois et plus, mais plus je lis, plus je me trompe.

J'ai essayé plusieurs guides, mais je n'ai trouvé personne qui fonctionne réellement.

Quelqu'un peut-il me montrer comment créer un script simple qui fonctionnera dans 11.10?

4
Industrial

La réponse de Marty Fried contient l'info la plus précieuse: le livre de recettes . La lecture de ce qui vous rend plus que capable d'écrire vos scripts d'initialisation.

Cependant, vous ne voulez pas jouer avec init.d, rc * .d, chkconfig et autres. Sur Ubuntu (et d’autres distributions), il ne s’agit que de restes de l’ancien système sysvinit que de nombreux paquets utilisent encore ou ne prennent en charge que pour des raisons héritées. VOUS N'AVEZ PAS BESOIN DE OR VEUX Y ALLER: -)

Le plus simple de tous les scripts Upstart est de démarrer un démon (mettez-le dans /etc/init/mydaemon.conf):

exec /path/to/binary

C'est tout ce dont vous avez besoin. Cela oblige Upstart à exécuter le démon lorsque vous exécutez start mydaemon.

OK, vous voulez que ça démarre automatiquement? Habituellement, commencer après dbus est un choix logique, alors allons-y:

start on started dbus
stop on stopping dbus
exec /path/to/binary

Ce script simple démarre votre démon à chaque démarrage de dbus et l’arrête juste avant que dbus ne s’arrête.

Vous voulez qu'il réapparaisse s'il se bloque? Aucun problème, ajoutez simplement respawn sur sa propre ligne dans le fichier.

Votre démon se forge ou se démonforme? Eh bien, attrapons-le quand même! Ajoutez expect fork en cas de flux unique ou expect daemon en cas de véritable démonisation (à double flux).

Résumons un script de démarrage simple pour votre démon:

author "Your name goes here - optional"
description "What your daemon does shortly - optional"

start on started dbus
stop on stopping dbus

# console output  # if you want daemon to spit its output to console... ick
respawn # it will respawn if crashed/killed

exec /path/to/binary

Si vous ne voulez pas exécuter un démon mais simplement une série de commandes, oublions la ligne exec et ajoutez une section de script:

script
   echo "Hello world!"
end script

Cela oblige Upstart à exécuter le script au lieu du démon. La section de script est juste un script Shell normal, vous pouvez donc faire à peu près tout ce que vous voulez à l'intérieur.

J'espère que ça aide. Tenez-vous en aux fichiers de configuration Upstart et ne jouez pas avec sysv hérité et vous resterez sain d'esprit :-)

8
Tuminoid

On dirait que vous étiez sur la bonne voie. Une certaine confusion peut survenir du fait qu'Ubuntu utilise Upstart à la place du système init Linux traditionnel, tout en prenant en charge les anciennes méthodes. Donc, vous pouvez voir des méthodes obsolètes qui fonctionnent toujours.

Je ne suis pas un expert et je ne sais pas trop où vous vous perdez, mais avez-vous lu les informations ici: http://upstart.ubuntu.com/cookbook/

Dans/etc, il y a beaucoup d'exemples à regarder. Je pense que les scripts actuels sont dans/etc/init, avec des liens dans divers répertoires tels que rc0.d, rc1.d, up. Celles-ci dépendent des niveaux d'exécution dans lesquels votre script doit être exécuté. Je semble rappeler qu'Ubuntu n'utilise pas beaucoup de niveaux d'exécution. Vous risquez donc de constater de nombreuses duplications ou des liens inutilisés.

N'oubliez pas non plus que les mêmes scripts sont utilisés pour démarrer et arrêter.

2
Marty Fried