我的 upstart 脚本显示正在运行但实际上并未运行 - Ubuntu 10.04 LTS

我的 upstart 脚本显示正在运行但实际上并未运行 - Ubuntu 10.04 LTS

这是在 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

在服务器上运行它时你得到了什么?如果你得到错误而不是成功,请先解决它。

相关内容