我有一个节点应用程序在服务器上作为守护进程永远运行。在其中一次更新后,我试图阻止它(稍后重启)。但令我惊讶的是forever stopall
没有做任何事情No forever processes running
被退回。 Forever list
返回了同样的内容。这两个命令我也试过sudo。
问题是我可以清楚地看到该节点仍在运行(我的应用程序运行正常)。知道出了什么问题吗?
P.S。我需要尽快滚动更新,所以我只是重新启动了服务器。但我仍然对这种情况感到好奇。
输入ps aux | grep app.js
后输入P.S.S.
ubuntu 1320 0.0 2.2 663040 23232 ? Ssl Sep12 0:00 /usr/bin/nodejs /usr/lib/node_modules/forever/bin/monitor node_app/app.js
ubuntu 1322 0.0 6.9 992564 70792 ? Sl Sep12 0:31 /usr/bin/nodejs /var/www/node_app/app.js
root 9739 0.0 0.0 10468 936 pts/0 S+ 11:09 0:00 grep --color=auto app.js
为什么会这样?我在amazon aws上运行节点app.js.
答案 0 :(得分:6)
解决方案1 - 使用--uid
我已经设法了如何使用UID在
forever
中标记您的应用,然后不使用forever stopall
。这是一种更干净的方式,并将根据脚本永久地终止所有进程。您只需要添加
--uid "scriptID"
参数,然后根据它进行所有处理,将一起控制。启动新守护程序:
forever start --uid "demo" --sourceDir /home/procdir -l /home/log/logfile -o /home/log/outputfile -a -d -v taskName
停止守护程序:
forever stop -uid "demo"
-bash-4.1$ forever list
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: [1] Test /usr/bin/node grunt serve:test 18217 18224 /home/admin/logs/test/forever.log 59:20:21:10.512
data: [2] Dev /usr/bin/node grunt serve:dev 18347 18354 /home/admin/logs/dev/forever.log 59:20:19:56.87
data: [3] Prod /usr/bin/node grunt serve:prod 20411 20418 /home/admin/logs/prod/forever.log 59:18:58:28.697
无论如何,你也可以运行(手动)这个命令来杀死进程:首先,永远杀死所有任务(这将阻止永远在杀死它时再次运行任务):
forever list | grep your_app | `awk '/\[0\]/{print "forever stop "$8}'`
之后,当永远被杀死时,现在是时候杀死你的node_app
了
ps -efa | grep node | grep your_app | `awk '{ print "kill "$2}'`
我强烈建议您不要使用
kill
。forever --uid
肯定是最好的解决方案。
希望这个解决方案可以帮到你!
解决方案2 - 永远--uid已被弃用
由于
forever --uid
已被弃用,我试图找到按名称管理多个应用的方式(不使用--uid弃用方法)。似乎使用配置文件是解决方案。正如在forever docsuid
和id
中所读取的参数仍然在配置文件中使用。经过一些测试,我确定id
是正确的参数:
示例:
-bash-4.1$ pwd
/jome/myuser/app
-bash-4.1$ forever list
info: No forever processes running
-bash-4.1$ forever start ./forever/development.json
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: index.js
-bash-4.1$ forever stop app4U
info: Forever stopped process:
uid command script forever pid id logfile uptime
[0] BaoO /usr/local/bin/node index.js 41196 41197 app4U /Users/me/.forever/BaoO.log 0:0:0:5.995
forever / development.json
{
// Comments are supported
"id": "app4U",
"append": true,
"watch": true,
"script": "index.js",
"sourceDir": "/jome/myuser/app"
}
index.js
a=0;
while (a<10) {
a+=1
a-=1
}