重新加载PM2配置文件

20

我在修改完PM2配置文件后重新加载时遇到了问题:

{
    "apps": [
        ...
        {
            "name": "foo",
            "script": "foo/index.js",
            "cwd": "foo",
            "watch": false
        }
    ]
}

我以前做过

pm2 restart config.json
pm2 reload config.json

并且

pm2 gracefulReload config.json

但他们没有重新加载现有应用程序的配置(应用程序配置更改未生效)。对我有效的唯一方法是:

pm2 delete foo
pm2 restart config.json
这应该如何完成?
3个回答

30

正如参考资料所述,配置不再重新加载:

从PM2 v2.1.X开始,默认情况下环境是不可变的,这意味着除非您告诉PM2进行更新,否则它们将永远不会被更新。要更新配置,您需要使用--update-env选项。

因此,应该这样做

pm2 startOrReload config.js --update-env

4
只是为了更新上面的参考资料..这里是你可以找到信息的地方 --update-env - Keaton Benning
1
这对于重新加载pm2配置文件以更改传递给我所针对的进程的启动脚本的参数非常有效。只是一个快速的提示,我必须使用配置文件的完整路径。除非明确告知在哪里查找文件,否则pm2将无法找到该文件。 - undefined

7
如果您正在使用 pm2 进行本地开发,并且遇到重新加载配置的问题,则应运行以下命令:
$ pm2 delete ecosystem.config.js

这将删除现有的服务(不用担心,不会删除任何文件)。然后重新加载配置,请运行:

$ pm2 start ecosystem.config.js

(提示: 你可能需要用你的配置文件名称替换 ecosystem.config.js)

这是一种非常粗略的重新加载方式,但如果你想要一个干净的起点,它是很好的选择。它有效地解决了一些问题,比如我遇到的 node-config 问题 - 尽管我在生态系统配置中添加了 instance_var,但我仍然收到了 NODE_APP_INSTANCE 警告。


这会删除清除该实例到目前为止的所有日志吗? - Fed

6
如果您需要完全清除并重新启动配置:
pm2 kill                                 # kill ongoing pm2 processes
pm2 flush                                # OPTIONAL if logs need to be removed
pm2 start /path/to/ecosystem.config.js   # load config file
pm2 save                                 # save current process list / save changes after loading config file

如果你一直收到pm2反馈信息:status: errored,以下内容可能会对你有用。

如果你只想重新加载即“刷新”配置,请使用以下方法:

pm2 startOrReload config.js --update-env

你应该先尝试重新加载,如果配置仍然没有刷新,请尝试完全清除缓存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接