CentOS 6 und Emporkömmling

18

Das neue CentOS 6 kommt mit Upstart und ersetzt init. Ich versuche, eine / etc / inittab-Datei in das neue Upstart-Format zu konvertieren. Dieser bestimmte Server hat nur ungefähr 15 inittab-Einträge, andere Server haben jedoch> 30. Wir wollen hauptsächlich den 'Respawn'-Teil von Inittab und Emporkömmling. Ich habe jedoch die gesamte Dokumentation zu Emporkömmlingen gelesen, die ich finden kann (die so ziemlich ALLES auf Ubuntu und anscheinend auf einer älteren Version von Emporkömmling basiert), und bin nicht weitergekommen. Ich kann eine Konfigurationsdatei erstellen (nennen wir sie /etc/init/test.conf). Die Datei enthält diese (Hinweis, anonymisiert)

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

Wenn ich einen initctl reload-configurationstelle, wird der Job erkannt. Ich kann es durch einen Anruf starten initctl start testund der Job wird gestartet.

Dies funktioniert jedoch nicht bei einem Neustart, sondern nur manuell. Ich habe versucht, den Startbefehl wie folgt zu ändern, ohne Erfolg

start on started

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

start on net-device-up IFACE=eth0 

und ungefähr ein Dutzend anderer Möglichkeiten, die ich in verschiedenen Beispielen erwähnen konnte. Keiner scheint das Skript zu starten. (test.conf gehört wie alle anderen Dateien in diesem Ordner root und 644)

Fehlt mir etwas auffällig Offensichtliches?

Brian
quelle

Antworten:

32

Ich fand ein sehr, sehr, sehr hilfreiches Startup-Skript für Leute, die in Zukunft Probleme haben. Schreibe dies 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

Dieses Skript protokolliert grundsätzlich alle Jobs, die gestartet oder gestoppt werden. Ich habe festgestellt, dass CentOS 6 nichts über Runlevel 'emittiert'. (Noch einige der anderen üblichen Ereignisse, die ich versucht hatte. '). Das Durchsuchen der Protokolldatei, die der Debug-Job in /tmp/log.file erstellt, war sehr hilfreich. Durch Ändern des Starts meines Skripts von:

start on runlevel [345]

zu

start on started sshd

Alle meine Jobs scheinen korrekt zu starten. Dies war ein Schmerz in der Rückseite, da jedes Beispiel, das ich fand, die frühere Syntax verwendete.

Brian
quelle
Wenn ich das mehr als einmal abstimmen könnte, hätte ich es getan.
Peter Mounce
15

Entschuldigung für die Nekropostierung, aber ich konnte das Problem folgendermaßen lösen:

start on stopped rc RUNLEVEL=[345]

"Angehalten" ist kein Tippfehler, der beim Betreten eines Runlevels anzuhalten scheint.

Leonid99
quelle
2
Danke für den Tipp! Necroposting ist großartig, wenn es hilfreich ist!
Brian
5

Dies ist, was ich getan habe (CentOS 6, Upstart 0.6.5), um Respawn-Probleme zu beheben. Tun Sie dies in einem anderen Terminal

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