Мой скрипт upstart говорит, что он запущен, но на самом деле не запущен - Ubuntu 10.04 LTS

Мой скрипт upstart говорит, что он запущен, но на самом деле не запущен - Ubuntu 10.04 LTS

Это на Ubuntu 10.04 LTS

Итак, у меня есть скрипт gulp (работающий через Node), который отлично работает, когда я запускаю его вручную. Он фактически запускает "watch" в каталоге, так что если какой-либо из файлов изменится, он автоматически запустит команду. Первоначальная проблема, с которой я столкнулся, заключалась в том, что если я сохранял изменение, содержащее ошибку, "watch" вылетал.

Я думал, что смогу исправить это, выполнив скрипт gulp через upstart и перезапустив его, если он зависнет. Но когда я запускаю "start gulpwatch" или даже "sudo start gulpwatch", он говорит, что запускается и дает мне pid, но на самом деле он просто запускается и зависает и не поддерживает "watch". Это подтверждается в syslog, где я вижу строки:

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

Вот мой файл upstart

/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"

Когда я запускаю две команды, перечисленные выше, «cd /opt/lib/vendor/node/» и «/usr/bin/gulp --gulpfile gulpfile.js», они работают отлично (но, конечно, не восстановятся, если произойдет сбой из-за синтаксической ошибки в файле наблюдения).

Есть идеи, почему мой скрипт upstart не работает?

решение1

Я разобрался. Мне нужно было запустить chdir /opt/lib/vendor/node/, а затем убрать эту часть из execоператора. По-видимому, execне запускает старые команды оболочки, а только выполняет скрипты (и аргументы)

решение2

Вам нужно попробовать выполнить строку перед тем, как выполнять ее через скрипт upstart. Я имею в виду эту строку:

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

Что вы получили, когда запустили его на сервере? Если вы получили ошибку вместо успеха, сначала устраните ее.

Связанный контент