
Ich habe ein einfaches Upstart-Skript, das einen Prozess ausführt und ihn neu startet, wenn er abstürzt. Das Problem ist, dass ich den Benutzer im Falle eines Absturzes darüber informieren möchte (weil er möglicherweise etwas unternehmen muss, um einen erneuten Absturz zu verhindern). Hier ist mein Skript:
start on runlevel [2345]
stop on runlevel [016]
chdir /opt
respawn
respawn limit 5 10
exec /usr/bin/gulp --gulpfile ./lib/vendor/node/gulpfile.js 2>&1 > /var/log/gulp.log
Nicht, dass ich den Standardfehler in die Konsole umleite (2>&1) und standardmäßig eine Protokolldatei ausgibt. Die Protokolldateiumleitung FUNKTIONIERT. Aber der Standardfehler in die Konsole funktioniert NICHT. Diese Fehlerumleitungtutfunktioniert, wenn ich den Befehl direkt von der Shell aus ausführe.
Dinge, die ich bisher versucht habe: - Dem Skript „Konsolenausgabe“ hinzufügen (das die Ausgabe angeblich nach /dev/console umleitet) - Den Befehl „exec start-stop-daemon --start -c myuser --exec“ verwenden (da ich dachte, dass /dev/console woanders hinzeigt, weil ich den Upstart-Job mit „sudo“ ausführe) **dieses Skript stürzt einfach ab und wird nicht einmal ausgeführt
Irgendwelche anderen Ideen? Ich brauche unbedingt eine Fehlerausgabe, die für den Benutzer in die Konsole eingeblendet wird.
Antwort1
Lassen Sie das weg 2>&1
– dadurch wird stderr tatsächlich auf stdout umgeleitet. Sie möchten, dass stderr zur Konsole geht – das ist die Standardeinstellung für stderr.
exec /usr/bin/gulp --gulpfile ./lib/vendor/node/gulpfile.js > /var/log/gulp.log