Wie debugge ich einen Upstart-Job?

Ich habe den folgenden Job in /etc/init/collector:

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon

exec /usr/bin/twistd -y /path/to/my/tac/file

Wenn ich den Job mit sudo service collector start starte, hängt er. Wenn ich ctrl-c und initctl list ausführe, sehe ich Folgendes:

collector start/killed, process 616

Ich kann keine Instanz des twistd - Daemons in ps sehen, und der HTTP-Server, den er bereitstellen soll, ist nicht vorhanden.

Ich habe dies sogar ohne 'expect daemon' und mit einem einfachen Aufruf eines einzeiligen Bash-Skripts mit einer script Strophe versucht, und es funktioniert immer noch nicht. Ich glaube, ich mache etwas sehr Falsches. Was könnte es sein?

Author: Cera, 2012-03-23

3 answers

Sie können stdout und stderr der gesamten Shell mit dem script Pragma (anstelle von exec) in Verbindung mit exec >FILE 2>&1 wie folgt umleiten:

script
    exec >/path/to/some_log_file 2>&1
    exec your_command_here
end script

Das sollte Ihnen hoffentlich einen besseren Einblick geben, was los ist. Ich habe dies nützlich gefunden, um alle möglichen Probleme in meinen Upstart-Skripten abzufangen. You could pipe your command ' s stdout/stderr direkt, aber Sie werden Fehler verpassen, die aus der Shell stammen (wie Syntaxfehler).

Andererseits, wenn service hängt, es macht gar nicht schlagen Sie Ihr Skript, in dem Fall nichts davon wird helfen, natürlich.

 14
Author: Charles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-06-13 05:29:59

Es gibt auch den deklarativen console log, wie hier definiert: http://upstart.ubuntu.com/cookbook/#console-log

Ich weiß nicht genug über Upstart, um zu wissen, ob es standardmäßig aktiviert ist, aber Sie können es pro Upstart-Job aktivieren, es wird standardmäßig auf /var/log/upstart/<job>.log

 2
Author: Ehtesh Choudhury,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-06-10 14:14:40

Überprüfen Sie, ob upstart Director vorhanden ist, und fügen Sie das Konsolenprotokoll vor der Skriptphase hinzu. (in Upstart-Version höher dann 1.4 ist es der Standard)

Konsolenprotokoll

- Skript exec >/path/to/some_log_file 2>&1 exec your_command_here skript beenden

Für weitere Informationen check thread: https://askubuntu.com/questions/207143/how-to-diagnose-upstart-errors/932155#932155

 0
Author: zachlaniado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-07-05 07:21:06