【问题标题】:How to disable/stop a pm2 module?如何禁用/停止 pm2 模块?
【发布时间】:2018-09-25 15:30:37
【问题描述】:

是否可以停止或禁用 pm2 模块? 我确实安装了 pm2-logrotate 模块,但最近社区发现了一个issue,它正在影响我们的服务,我们需要停止或禁用该模块。

模块不断重启,节点应用处于生产状态。所以我们不能只是停止 pm2 并寻找修复方法。

nodejs version: "4.8.2"
pm2 version "2.7.2"
pm2-logrotate version "2.4.0"
OS-Release: "Raspbian Stretch"


$ pm2 describe pm2-logrotate | grep -i script
│ script path       │ /home/user/.pm2/node_modules/pm2-logrotate/app.js │
│ script args       │ N/A                                                     │
│ script id         │ 0                                                       │
$ pm2 describe pm2-logrotate | grep -i id
 Describing process with id 0 - name pm2-logrotate
│ pid path          │ /home/user/.pm2/pids/pm2-logrotate-0.pid          │
│ script id         │ 0                                                       │
$ cat /home/user/.pm2/pids/pm2-logrotate-0.pid
7723

【问题讨论】:

  • 基本上,根据 pm2 文档npmjs.com/package/pm2,pm2 stop all(停止所有应用程序),pm2 stop 0(其中 0 是进程的 id)应该适用于您的情况。

标签: node.js npm pm2 pm2-logrotate


【解决方案1】:

你想杀死进程吗?如果是这样,您可以使用以下命令:

pm2 kill filename.js

【讨论】:

    【解决方案2】:

    你可以pm2 describe pm2-logrotate。这将返回很多信息。你要找的是script id

    │ interpreter       │ node
    │ interpreter args  │ N/A
    │ script id         │ 0     
    │ exec cwd          │ /home/user/.pm2/modules/pm2-logrotate/node_modules/pm2-logrotate
    │ exec mode         │ fork_mode 
    │ node.js version   │ 8.11.1
    

    现在您知道AppId 为 0,所以您可以这样做

    pm2 stop 0

    模块将停止。

    您始终可以使用

    进行卸载

    pm2 uninstall pm2-logrotate

    【讨论】:

    • 它没有脚本ID(它是0)。我找到了pid路径,是一个值为7723的文件,你觉得执行pm2 stop 7723可以安全吗?
    • ```$ pm2 描述 pm2-logrotate | grep -i script │ 脚本路径│ /home/user/.pm2/node_modules/pm2-logrotate/app.js │ │ script args │ N/A │ │ script id │ 0 │ $ pm2 describe pm2-logrotate | grep -i id 描述 id 为 0 的进程 - 名称 pm2-logrotate │ pid 路径 │ /home/user/.pm2/pids/pm2-logrotate-0.pid │ │ 脚本 id │ 0 │ $ cat /home/imagineing/. pm2/pids/pm2-logrotate-0.pid 7723
    • 你试过pm2 stop 0。第一个应用程序的 id 为 0。如果这个模块是你在新的 pm2 中安装的第一个模块,那么它的 id 为 0。不要使用 pid。即使你杀死它,pm2 也会创建一个新进程。
    • 谢谢。你解决了我的问题。