Mein Upstart-Skript gibt an, dass es ausgeführt wird, läuft aber nicht - Ubuntu 10.04 LTS

Mein Upstart-Skript gibt an, dass es ausgeführt wird, läuft aber nicht - Ubuntu 10.04 LTS

Dies ist auf Ubuntu 10.04 LTS

Ich habe also ein Gulp-Skript (das über Node ausgeführt wird), das hervorragend funktioniert, wenn ich es manuell ausführe. Es führt tatsächlich eine „Überwachung“ eines Verzeichnisses aus, sodass automatisch ein Befehl ausgeführt wird, wenn sich eine der Dateien ändert. Das anfängliche Problem, das ich hatte, war, dass die „Überwachung“ abstürzte, wenn ich eine Änderung speichere, die einen Fehler enthält.

Ich dachte, ich könnte das Problem beheben, indem ich das Gulp-Skript über Upstart ausführe und es neu starte, wenn es abstürzt. Aber wenn ich „start gulpwatch“ oder sogar „sudo start gulpwatch“ ausführe, heißt es, es startet und gibt mir eine PID, aber in Wirklichkeit startet es nur und stürzt ab und behält die „Überwachung“ nicht bei. Dies wird im Syslog bestätigt, wo ich die Zeilen sehe:

Mar 24 14:19:19 ubuntu init: gulpwatch main process (2653) terminated with status 2
2072 Mar 24 14:19:19 ubuntu init: gulpwatch main process ended, respawning
2073 Mar 24 14:19:19 ubuntu init: gulpwatch main process (2654) terminated with status 2
2074 Mar 24 14:19:19 ubuntu init: gulpwatch main process ended, respawning
2075 Mar 24 14:19:19 ubuntu init: gulpwatch main process (2655) terminated with status 2
2076 Mar 24 14:19:19 ubuntu init: gulpwatch main process ended, respawning
2077 Mar 24 14:19:19 ubuntu init: gulpwatch main process (2656) terminated with status 2
2078 Mar 24 14:19:19 ubuntu init: gulpwatch main process ended, respawning
2079 Mar 24 14:19:19 ubuntu init: gulpwatch main process (2657) terminated with status 2
2080 Mar 24 14:19:19 ubuntu init: gulpwatch main process ended, respawning
2081 Mar 24 14:19:19 ubuntu init: gulpwatch main process (2658) terminated with status 2

Hier ist meine Upstart-Datei

/etc/init/gulpwatch.conf
   start on runlevel [2345]
    stop on runlevel [016]
    respawn
    respawn limit 5 10

    exec "cd /opt/lib/vendor/node/;/usr/bin/gulp --gulpfile gulpfile.js"

Wenn ich die beiden oben aufgeführten Befehle „cd /opt/lib/vendor/node/“ und „/usr/bin/gulp --gulpfile gulpfile.js“ ausführe, funktioniert es perfekt (aber natürlich wird es nicht erneut gestartet, wenn es aufgrund eines Syntaxfehlers in der Überwachungsdatei abstürzt).

Irgendeine Idee, warum mein Upstart-Skript nicht funktioniert?

Antwort1

Ich habe es herausgefunden. Ich musste chdir ausführen /opt/lib/vendor/node/und dann diesen Teil aus der execAnweisung entfernen. Anscheinend execführt es keine alten Shell-Befehle aus, sondern nur Skripte (und Argumente).

Antwort2

Sie müssen versuchen, die Zeile auszuführen, bevor Sie sie über das Upstart-Skript ausführen. Ich meine diese Zeile:

cd /opt/lib/vendor/node/;/usr/bin/gulp --gulpfile gulpfile.js

Was haben Sie erhalten, als Sie es auf dem Server ausgeführt haben? Wenn Sie statt einer Erfolgsmeldung einen Fehler erhalten, beheben Sie das Problem zuerst.

verwandte Informationen