2

Это на Ubuntu 10.04 LTS

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

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

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

Вот мой выскочка файл

/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», это работает отлично (но, конечно, не будет перезапущено, если произойдет сбой из-за к синтаксической ошибке в файле просмотра).

Любая идея, почему мой сценарий выскочка не работает ??

2 ответа2

2

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

-1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .