Ubuntu 14 Upstart,脚本从不运行 - 没有日志文件

Ubuntu 14 Upstart,脚本从不运行 - 没有日志文件

如果这个问题已经得到解答,我提前表示歉意,但我已经查看了所有其他问题,并没有发现任何有帮助的东西。

这是我的 upstart 脚本:

nodeapps.conf

start on [2345]
forever start --spinSleepTime 10000 /home/nodeapps/node_app.js
forever start --spinSleepTime 10000 /home/nodeapps/node_metrix.js

当我重新启动时,我调用forever list来查看是否有任何正在运行的内容。什么都没有显示出来。我看到的其他答案建议查看 /var/log/upstart,但没有 nodeapps 的日志。

我已经尝试过在启动时启动,并启动于 [2345]

我是否遗漏了一些显而易见的东西?我使用 nano 在 /etc/init/ 中创建了该文件。

编辑:我应该注意,这是通过 VPS 的 Ubuntu 14,我只能访问控制台,没有 GUI。

答案1

尝试一下这个新贵脚本:

===

在运行级别启动 [2345]

exec start-stop-daemon --start --exec /usr/bin/forever --start --spinSleepTime 10000 /home/nodeapps/node_app.js

exec start-stop-daemon --start --exec /usr/bin/forever --start --spinSleepTime 10000 /home/nodeapps/node_metrix.js

===

基本上forever不是 upstart 脚本的关键字,并且 upstart 不知道如何处理它。

exechowever 是一个关键字,它告诉 upstart 启动哪个程序。

更新:答案

...do you think I could get away with just using /usr/bin/forever ....?很可能不是。upstart 脚本不是像 bash 脚本(或 Windows 中的 .bat / .cmd 文件)那样的命令序列。它们是配置文件(像 Windows 中的 .ini 文件),其中一个配置选项恰好指向实际的可执行文件。

...does this explain the fact that theres no logfile being created?由于 forever 从未启动过,因此它没有机会留下日志文件。不过,我确信您可以在 upstart 日志文件中找到一些东西。

答案2

我知道我有点晚了,但是我不想使用 exec 和 start-stop-daemon 进程,而是使用 forever 的内置守护进程 foreverd。

foreverd start --spinSleepTime 10000 /home/nodeapps/node_app.js
foreverd start --spinSleepTime 10000 /home/nodeapps/node_metrix.js

如果根环境没有 forever 的路径(虽然可能有,因为你是通过 sudo npm install -g forever 安装的),你需要指定 foreverd 的路径,而不是运行 foreverd。运行

which foreverd

在你登录的终端中获取 foreverd 的位置,然后运行

/path/to/foreverd start --spinSleepTime 10000 /home/nodeapps/node_app.js
/path/to/foreverd start --spinSleepTime 10000 /home/nodeapps/node_metrix.js

这还将自动在 ~/.forever/.log 中创建永久日志文件。

你可以通过运行 forever list 来弄清楚是什么,它将给出如下输出:

jbarber$ forever list
info:    Forever processes running
data:        uid  command             script                                              forever pid  logfile                         uptime       
data:    [0] 4Ola /usr/local/bin/node /home/jbarber/projects/project_name/_stage/index.js 7665    7667 /home/jbarber/.forever/4Ola.log 0:0:6:16.714

然后你可以使用以下命令重新启动/停止该进程

foreverd restart <process_num>
foreverd stop <process_num>

在这个例子中,进程号为 0。

相关内容