这是在 Ubuntu 10.04 LTS 上
所以我有一个 gulp 脚本(通过 Node 运行),当我手动执行它时,它工作得很好。它实际上在目录上运行“监视”,这样如果任何文件发生变化,它就会自动运行命令。我遇到的第一个问题是,如果我保存了有错误的更改,“监视”就会崩溃。
我以为我可以通过 upstart 执行 gulp 脚本来解决这个问题,如果它崩溃了就重新运行它。但是当我运行“start gulpwatch”甚至“sudo start gulpwatch”时,它说它启动了并给了我一个 pid,但实际上它只是启动了然后崩溃了,并没有维护“监视”。这在系统日志中得到了证实,我看到了以下几行:
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
它不运行任何旧的 shell 命令,它只执行脚本(和参数)
答案2
在通过 upstart 脚本执行该行之前,您必须尝试执行该行。我指的是这一行:
cd /opt/lib/vendor/node/;/usr/bin/gulp --gulpfile gulpfile.js
在服务器上运行它时你得到了什么?如果你得到错误而不是成功,请先解决它。