CentOS 6 et upstart

18

Le nouveau CentOS 6 est livré avec Upstart, remplaçant init. J'essaie de convertir un fichier / etc / inittab au nouveau format parvenu. Ce serveur particulier ne possède qu'une quinzaine d'entrées inittab, cependant, d'autres serveurs en ont> 30. Nous voulons principalement la partie «respawn» de inittab et upstart. Cependant, j'ai lu toute la documentation sur les arrivées que je peux trouver (qui est à peu près TOUT basée sur Ubuntu, et apparemment sur une version plus ancienne de upstart) et je ne suis nulle part. Je peux créer un fichier de configuration (appelons-le /etc/init/test.conf). Le fichier contient ceci (note, anonymisé)

start on runlevel [345]
stop on starting shutdown

respawn
#Comment about what it does
exec su -c "/usr/bin/ssh -2CNL 11111:127.0.0.1:11111 10.10.1.1" username

Si j'émets un, initctl reload-configurationle travail est reconnu. Je peux le démarrer en appelant initctl start testet le travail commencera.

Cependant, cela ne fonctionnera pas lors d'un redémarrage, uniquement manuellement. J'ai essayé de modifier la commande de démarrage comme suit, sans succès

start on started

start on (local-filesystems and net-device-up IFACE!=lo)

start on net-device-up IFACE=eth0 

et environ une douzaine d'autres façons que j'ai pu voir mentionnées dans différents exemples. aucun ne semble lancer le script. (test.conf, comme tous les autres fichiers de ce dossier, appartient à root et 644)

Suis-je en train de manquer quelque chose d’évident?

Brian
la source

Réponses:

32

J'ai trouvé un script de démarrage très, très, très utile pour les personnes qui ont des problèmes à l'avenir. Mettez-le dans / etc / init /

# /etc/init/debug.conf
start on ( starting JOB!=debug \
or started JOB!=debug \
or stopping JOB!=debug \
or stopped JOB!=debug )
script
exec 1>>/tmp/log.file
echo -n "$UPSTART_JOB/$UPSTART_INSTANCE ($0):$$:`date`:"
echo "Job $JOB/$INSTANCE $UPSTART_EVENTS. Environment was:"
env
echo
end script

Ce script enregistre essentiellement tous les travaux qui démarrent ou s'arrêtent. J'ai trouvé que CentOS 6 n'émet rien sur les niveaux d'exécution. (ni certains des autres événements courants que j'avais essayés. '). La recherche du fichier journal créé par le travail de débogage dans /tmp/log.file a été très utile. En changeant le début de mon script de:

start on runlevel [345]

à

start on started sshd

tous mes emplois semblent démarrer correctement. Ce fut une douleur à l'arrière, car chaque exemple que j'ai trouvé utilisait l'ancienne syntaxe ..

Brian
la source
Si je pouvais voter cela plus d'une fois, je l'aurais fait.
Peter Mounce
15

Désolé pour le nécropostage, mais j'ai réussi à résoudre ce problème en utilisant ce qui suit:

start on stopped rc RUNLEVEL=[345]

"arrêté" n'est pas une faute de frappe - rc semble s'arrêter en entrant dans un niveau d'exécution.

Leonid99
la source
2
Merci pour le conseil! La nécropostage est super, quand c'est utile!
Brian
5

C'est ce que j'ai fait (CentOS 6, Upstart 0.6.5) pour déboguer les problèmes de réapparition. Dans un autre terminal, faites

sudo initctl log-priority debug 
sudo tail -F /var/log/messages
Mark Lakata
la source