【问题标题】:Forever stop server.js returns "server.js is not a valid index for a forever process."永远停止 server.js 返回“server.js 不是永远进程的有效索引。”
【发布时间】:2013-07-22 02:18:15
【问题描述】:

我继承了一台服务器,但遇到了一个奇怪的问题。我在运行forever start server.js 时遇到问题,它没有返回消息,然后forever list 没有显示任何永久进程正在运行。经过一番挖掘,我发现有些人建议永远以sudo 运行。

在我运行sudo forever start server.js 之后,它似乎启动得很好,forever list 显示 server.js 正在运行。但是,现在我无法停止该过程。运行 kill 会从 top 显示的列表中删除节点,但 Forever 仍将 server.js 视为正在运行。运行 sudo forever stop server.js 返回错误“server.js 不是永久进程的有效索引”。运行 sudo forever stopallsudo forever list 返回

node.js:63
    throw e;
    ^
TypeError: Cannot call method 'replace' of undefined
    at Argv (/usr/local/lib/node/.npm/optimist/0.1.2/package/lib/optimist.js:38:33)
    at Object.<anonymous> (/usr/local/lib/node/.npm/forever/0.3.0/package/bin/forever:81:26)
    at Module._compile (node.js:462:23)
    at Module._loadScriptSync (node.js:469:10)
    at Module.loadSync (node.js:338:12)
    at loadModule (node.js:283:14)
    at require (node.js:411:14)
    at Object.<anonymous> (/usr/local/bin/forever:11:18)
    at Module._compile (node.js:462:23)
    at Module._loadScriptSync (node.js:469:10)

无论我做什么,我都无法停止 server.js。我想永远在它的使命中有点过分热心。有什么建议吗?

【问题讨论】:

    标签: node.js sudo forever


    【解决方案1】:

    不知道为什么会这样,但由于某种原因它解决了我的问题。好吧,不是全部,而是部分。当我su root 然后运行永久命令时,我可以顺利地startstopallforever stop server.js 仍然出现同样的错误,因此无论出于何种原因,我都无法以这种方式停止服务器,但我可以通过将 forever stopall 运行为 su root 来解决它。

    【讨论】:

    • 这很有效,因为您将永久进程作为根进程启动。实际上,如果您在命令提示符下键入ps aux | grep forever | grep -v grep,您会看到该进程的所有者是root。只有 root 可以启动/停止进程。
    • 好的,我明白了。我认为使用sudo 运行它会以相同的方式运行。我正在解决这个问题,所以我很感激你的解释。仍然没有解释为什么它不接受 forever stop server.js 作为有效命令。知道为什么会这样吗?
    • ps aux | grep 'server.js' | grep -v grep的输出最后一列的值是多少?
    • 有两行。第一行的最后一列是/usr/local/bin/forever start server.js,第二行的最后一列是server.js
    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 2019-11-15
    相关资源
    最近更新 更多