Centos 8 上 PM2 每 90 秒就会被杀死一次

Ale*_*Laz 14 pm2 centos8

我刚刚安装了CentOS 8并添加了nodejs(尝试了v12和v14)然后我使用npm install pm2@latest安装了pm2(所以在发布时它使用v4.4.0)。我确实尝试过旧版本(v3.5.0),但它的作用完全相同。

安装pm2后,我运行命令“pm2startup”

重新启动后,pm2 确实启动,但在 90 秒后被杀死,然后重新启动并给出此消息

“pm2 已被信号杀死,退出前转储进程列表...”

首先,我认为这是因为我的应用程序(pm2 应该管理的应用程序),但我从 pm2 中删除了它,所以它实际上是空的,但它做了同样的事情

小智 18

以 root 身份运行以下命令对我有用:

pm2 update
Run Code Online (Sandbox Code Playgroud)


Epe*_*exa 11

我没有禁用 SE Linux(我认为禁用它不安全),但以下方法帮助了我:

编辑文件:/etc/systemd/system/pm2-root.service

  1. 添加新行:Environment=PM2_PID_FILE_PATH=/run/pm2.pid

  2. 并将: 替换PIDFile=/root/.pm2/pm2.pid为:PIDFile=/run/pm2.pid

版本:

  • CentOS 8.3.2011
  • Node.js 14.16.0
  • 国家PM 7.7.5
  • 颗粒物 4.5.5

原来的答案。谢谢亚历克!


Ale*_*Laz 10

稍后更新。对于那些面临同样问题的人。这是一个与 SE Linux 相关的问题。已知的解决方法(我发现的)。

  1. 禁用 SE Linux(显然,不推荐)

  2. 转到 /etc/systemd/system/pm2-root.service - 注释 PIDFile=...(在该行前面添加 #)

  3. 审核和跟踪 - 使用以下命令:

     # dnf install policycoreutils-python-utils setroubleshoot-server -y
     # journalctl -f
    
    Run Code Online (Sandbox Code Playgroud)

    此时,您应该在输出(日志)中看到解决方案,它应该类似于:

    # ausearch -c 'systemd' --raw | audit2allow -M my-systemd
    # semodule -i my-systemd.pp
    
    Run Code Online (Sandbox Code Playgroud)

    您需要执行最后一步(ausearch...和semodule...)两次 - 我做了一次,重新启动机器并在 90 秒后注意到同样的问题。但如果你仔细阅读日志,你会发现这个问题似乎输出了两次。(看起来一样)。可能有两件事正在尝试写入该文件(pm2-root.service)。

仍在等待完美的解决方案(由真正知道如何以正确的方式解决此问题的人完成),但对于那些遇到此问题的人来说,这些选项中的任何一个似乎都可以正常工作。

  • 选项 2 似乎对我有用。谁能解释一下这是如何工作的? (3认同)

小智 9

我遇到了同样的问题,我在网上尝试了几种解决方案,但没有一个对我有用。

但是,我完全删除了pm2,重新启动服务器,然后重新安装pm2,这对我来说就完成了。

1- 停止并移除pm2

pm2 kill
sudo npm remove pm2 -g
Run Code Online (Sandbox Code Playgroud)

2-重新启动服务器

sudo reboot
Run Code Online (Sandbox Code Playgroud)

3-再次登录,然后重新安装pm2

sudo npm install -g pm2
Run Code Online (Sandbox Code Playgroud)