我有一个节点脚本,我需要在上传新版本之前停止永久进程,然后重新启动它;
问题是我只知道该进程的名称,并且
forever stop processName.js
不起作用,因为它期望索引或uid; 只知道名字就可以阻止它吗?
答案 0 :(得分:3)
最后我得到了它,使用变量:
uid=$(forever list | grep processName.js | cut -c24-27) && forever stop $uid
答案 1 :(得分:0)
您还可以在启动过程时为该进程分配一个唯一的ID,然后可以使用该ID关闭它。它通过uid
查找现有进程,如果正在运行则将其停止。然后它将再次以相同的唯一名称开始。
if forever list | grep 'my-unique-process'; then forever stop my-unique-process; fi
forever -a --uid my-unique-process start app.js
说明:
如果该进程正在运行,则将其关闭。如果在不运行时将其关闭,则会抛出错误
Forever cannot find process with id
第一行寻找forever list
命令的输出并匹配进程名称。简单的if-else shell。
在第二行中,-a
将追加到日志中。如果您不使用-a
,有时会显示“日志文件已存在”错误
--uid
用于为进程分配唯一的ID。
答案 2 :(得分:0)
forever stop /home/user/server/script.js (full path)