Frage CentOS 6 und Emporkömmling


Das neue CentOS 6 wird mit Upstart ausgeliefert und ersetzt init. Ich versuche eine / etc / inittab-Datei in das neue Upstart-Format zu konvertieren. Dieser bestimmte Server hat nur 15 oder so inittab-Einträge, andere Server haben jedoch> 30. Wir wollen vor allem den Respawn-Teil von inittab und upstart. Ich lese jedoch die gesamte Dokumentation über den Anfang, die ich finden kann (die fast ALLE auf Ubuntu basiert, und anscheinend auf einer älteren Version von Emporkömmling) und nirgends hinkommt. Ich kann eine Konfigurationsdatei erstellen (nennen wir es /etc/init/test.conf). Die Datei enthält dies (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 a initctl reload-configuration Der Job wird anerkannt. Ich kann damit anfangen, indem ich anrufe initctl start test und der Job wird gestartet.

Dies funktioniert jedoch bei einem Neustart nur manuell. Ich habe versucht, den Startbefehl zu ändern, ohne Glück

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ähnt sehen könnte. keiner scheint das Skript zu starten. (test.conf gehört wie alle anderen Dateien in diesem Ordner zu root und 644)

Fehle ich etwas, das offensichtlich ist?


18
2017-07-18 18:41


Ursprung




Antworten:


Ich habe ein sehr, sehr, sehr hilfreiches Upstart-Skript für Leute gefunden, die in der Zukunft Probleme haben. Setzen Sie 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 Runlevels "emittiert". (noch einige der anderen gemeinsamen Ereignisse, die ich versucht hatte.). Das Suchen der Protokolldatei, die der Debug-Job in /tmp/log.file erstellt, war sehr hilfreich. Indem ich den Start meines Skripts ändere 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 ehemalige Syntax verwendete.


32
2017-07-19 21:17



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


Entschuldigung für Nekropsierung, aber ich habe es geschafft, dieses Problem zu lösen, indem ich Folgendes benutze:

start on stopped rc RUNLEVEL=[345]

"stopped" ist kein Tippfehler - rc scheint bei einem Runlevel zu stoppen.


15
2018-03-18 12:19



Danke für den Tipp! Necroposting ist großartig, wenn es hilfreich ist! - Brian


Dies ist, was ich getan habe (CentOS 6, Upstart 0.6.5), um Respawn-Probleme zu debuggen. In einem anderen Terminal

sudo initctl log-priority debug 
sudo tail -F /var/log/messages

5
2017-08-27 19:12