これはUbuntu10.04LTSにあります
そのため、手動で実行するとうまく機能するgulpスクリプト(Nodeを介して実行)があります。実際にはディレクトリで「監視」を実行するため、ファイルが変更された場合は自動的にコマンドが実行されます。私が最初に抱えていた問題は、バグのある変更を保存すると、「ウォッチ」がクラッシュすることでした。
Upstartを介してgulpスクリプトを実行し、クラッシュした場合はリスポーンすることで、これを修正できると思いました。しかし、「startgulpwatch」または「Sudostartgulpwatch」を実行すると、起動して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"
上記の2つのコマンド「cd/opt/lib/vendor/node /」と「/ usr/bin/gulp --gulpfile gulpfile.js」を実行すると、完全に機能します(ただし、クラッシュした場合はもちろん、再スパンされません。監視ファイルの構文エラーに)。
私のupstartスクリプトが機能しない理由は何ですか?
私はそれを考え出した。 chdirを実行する必要がありました/opt/lib/vendor/node/
次に、その部分をexec
ステートメントから取り出します。どうやらexec
は古いシェルコマンドを実行せず、スクリプト(および引数)のみを実行します