Node.js 永远停止服务器。js返回;server.js不是永久进程的有效索引。”;

Node.js 永远停止服务器。js返回;server.js不是永久进程的有效索引。”;,node.js,sudo,forever,Node.js,Sudo,Forever,我继承了一个服务器,我有一个奇怪的问题。我在运行forever start server.js时遇到了一个问题,它没有返回消息,然后forever list没有显示任何正在运行的forever进程。经过一番挖掘,我发现有些人建议永远以sudo的身份跑步 在我运行了sudo forever start server.js之后,它似乎启动得很好,forever list显示server.js正在运行。然而,现在我无法停止这个过程。运行kill会从顶部显示的列表中删除节点,但始终会将server.js

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

在我运行了
sudo forever start server.js
之后,它似乎启动得很好,
forever list
显示server.js正在运行。然而,现在我无法停止这个过程。运行
kill
会从
顶部显示的列表中删除节点,但始终会将server.js视为正在运行。运行
sudo forever stop server.js
返回错误“server.js不是永久进程的有效索引”。运行
sudo forever stopall
sudo 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)
node.js:63
投掷e;
^
TypeError:无法调用未定义的方法“replace”
在Argv(/usr/local/lib/node/.npm/optimist/0.1.2/package/lib/optimist.js:38:33)
反对。(/usr/local/lib/node/.npm/forever/0.3.0/package/bin/forever:81:26)
在模块上编译(node.js:462:23)
在模块处。加载脚本同步(node.js:469:10)
在Module.loadSync(node.js:338:12)
在loadModule(node.js:283:14)
在需要时(node.js:411:14)
反对。(/usr/local/bin/forever:11:18)
在模块上编译(node.js:462:23)
在模块处。加载脚本同步(node.js:469:10)

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

不知道为什么会这样,但出于某种原因,它解决了我的问题。嗯,不是全部,而是部分。当我
su root
然后运行forever命令时,我可以
start
stopall
无障碍运行。对于
永久停止服务器.js仍然会出现相同的错误,因此无论出于何种原因,我都无法以那种方式停止服务器,但我通过能够像
su root
那样运行
永久停止所有
来解决这个问题,因为您将永久进程作为根进程启动。实际上,如果在命令提示符中键入
ps aux | grep forever | grep-v grep
,您将看到进程的所有者是root。只有root可以启动/停止进程。好的,我明白了。我想用
sudo
运行它也会以同样的方式运行。我会在进行过程中弄明白这一点,所以我很感谢你的解释。仍然没有解释为什么它不接受
永久停止server.js
作为有效命令。知道为什么吗?ps aux | grep'server.js | grep-v grep
输出的最后一列的值是多少?有两行。第一行的最后一列是
/usr/local/bin/forever start server.js
,第二行是
server.js