【问题标题】:How to stop a forever process knowing the name如何停止知道名称的永远过程
【发布时间】:2019-05-16 13:26:25
【问题描述】:

我有一个节点脚本,我需要在其中停止一个永久进程,然后再上传新版本并重新启动它;

问题是我只知道那个进程的名字,而且

forever stop processName.js

不起作用,因为它需要索引或 uid; 只知道名字就可以阻止它吗?

【问题讨论】:

    标签: node.js forever


    【解决方案1】:

    我终于明白了,使用一个变量:

    uid=$(forever list | grep processName.js | cut -c24-27) && forever stop $uid
    

    【讨论】:

    • This answer 也有效,它来自永远本身。并且 --uuid 选项未被弃用
    • 效果很好。唯一的缺点是,如果你有两个带有 processName.js 的进程,它不会杀死任何一个。
    【解决方案2】:
    forever stop /home/user/server/script.js (full path)
    

    【讨论】:

      【解决方案3】:

      您还可以在启动进程时为其分配一个唯一的 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。

      【讨论】:

      • 值得注意的是, --uid 不适用于选项日志:forever --uid my-unique-process logs
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 2019-07-14
      • 2015-12-06
      相关资源
      最近更新 更多