【发布时间】:2019-05-16 13:26:25
【问题描述】:
我有一个节点脚本,我需要在其中停止一个永久进程,然后再上传新版本并重新启动它;
问题是我只知道那个进程的名字,而且
forever stop processName.js
不起作用,因为它需要索引或 uid; 只知道名字就可以阻止它吗?
【问题讨论】:
我有一个节点脚本,我需要在其中停止一个永久进程,然后再上传新版本并重新启动它;
问题是我只知道那个进程的名字,而且
forever stop processName.js
不起作用,因为它需要索引或 uid; 只知道名字就可以阻止它吗?
【问题讨论】:
我终于明白了,使用一个变量:
uid=$(forever list | grep processName.js | cut -c24-27) && forever stop $uid
【讨论】:
--uuid 选项未被弃用
forever stop /home/user/server/script.js (full path)
【讨论】:
您还可以在启动进程时为其分配一个唯一的 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 命令的输出并匹配进程名称。 shell 的简单 if-else。
在第二行中,-a 将附加到日志中。如果不使用-a,有时会报错“日志文件已存在”
--uid用于给进程分配一个唯一的id。
【讨论】:
forever --uid my-unique-process logs