CentOS 6 e successivi


18

Il nuovo CentOS 6 viene fornito con Upstart, in sostituzione di init. Sto cercando di convertire un file / etc / inittab nel nuovo formato di avvio. Questo particolare server ha solo circa 15 voci inittab, tuttavia altri server hanno> 30. Vogliamo principalmente la parte "respawn" di inittab e upstart. Tuttavia, ho letto tutta la documentazione upstart che riesco a trovare (che è praticamente TUTTA basata su Ubuntu e apparentemente su una versione precedente di upstart) e non sono arrivata da nessuna parte. Posso creare un file di configurazione (chiamiamolo /etc/init/test.conf). Il file contiene questo (nota, anonimizzato)

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

Se emetto un initctl reload-configurationlavoro viene riconosciuto. Posso avviarlo chiamando initctl start teste il lavoro inizierà.

Tuttavia, questo non funzionerà al riavvio, solo manualmente. Ho provato a modificare il comando di avvio nel modo seguente, il tutto senza fortuna

start on started

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

start on net-device-up IFACE=eth0 

e circa una dozzina di altri modi che ho potuto vedere menzionati in diversi esempi. nessuno sembra iniziare la sceneggiatura. (test.conf, come tutti gli altri file in questa cartella, sono di proprietà di root e 644)

Mi sto perdendo qualcosa di palesemente ovvio?

Risposte:


32

Ho trovato uno script upstart molto, molto, molto utile per le persone che hanno problemi in futuro. Metti questo in / 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

Questo script sostanzialmente registra tutti i lavori che si avviano o si fermano. Ho scoperto che CentOS 6 non "emette" nulla sui runlevel. (né alcuni degli altri eventi comuni che avevo provato. '). È stato molto utile esaminare il file di registro creato dal processo di debug in /tmp/log.file. Cambiando l'inizio della mia sceneggiatura da:

start on runlevel [345]

per

start on started sshd

tutti i miei lavori sembrano avviarsi correttamente. Questo è stato un dolore nella parte posteriore, poiché ogni esempio che ho trovato utilizzava la precedente sintassi ..


Se potessi votare più di una volta, lo avrei fatto.
Peter Mounce,

15

Ci scusiamo per il necroposting, ma sono riuscito a risolvere questo problema utilizzando quanto segue:

start on stopped rc RUNLEVEL=[345]

"fermato" non è un errore di battitura - sembra che si fermi entrando in un runlevel.


2
Grazie per il consiglio! Il necropostaggio è fantastico, quando è utile!
Brian

5

Questo è quello che ho fatto (CentOS 6, Upstart 0.6.5) per eseguire il debug dei problemi di respawn. In un altro terminale, fare

sudo initctl log-priority debug 
sudo tail -F /var/log/messages
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.