【问题标题】:How to remove pm2 from startup (on mac)如何从启动中删除 pm2(在 Mac 上)
【发布时间】:2015-04-10 01:42:39
【问题描述】:

我正在试验 pm2,它是 node.js 应用程序的进程管理器。我尝试了他们的pm2 startup 实用程序,该实用程序在系统重新启动时为 pm2 生成并安装启动脚本。

我在我的 Mac 上试过这个,它完美无缺。 pm2 会自动重新启动并生成我所有的节点脚本。

但是现在,我已经完成了实验,如何从我的启动中删除它?我希望 pm2 带有一个类似的简单实用程序,可以从启动中自行卸载。

我知道它在 mac 上使用launchd 来重新启动进程。我注意到它在/Users/<username>/Library/LaunchAgents 目录下安装了一个io.keymetrics.PM2.plist 文件。

只是删除这个文件那么简单吗?还是它在做一些更具侵入性的事情,并且需要更优雅的卸载?

它内部使用以下命令安装启动脚本

   sudo env PATH=$PATH:/usr/local/bin pm2 startup darwin -u shaunak

【问题讨论】:

    标签: node.js launchd pm2


    【解决方案1】:

    在 Mac OS 上从启动中删除 pm2:

    • 将 CURRENT_USER 更改为您的 mac 用户名。
    • 运行以下命令:
    sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 unstartup launchd -u m --hp /Users/CURRENT_USER
    

    【讨论】:

      【解决方案2】:

      如果你想停止整个 pm2 启动过程 make :

      pm2 unstartup
      

      如果您只想删除一个应用程序:

      pm2 stop yourapp //if needed
      pm2 delete yourapp
      pm2 save
      

      对你来说可能为时已晚,但也许对别人有用...

      【讨论】:

        【解决方案3】:

        pm2 unstartup 在内部使用以下命令的 Ubuntu 16.04 上运行良好:

        sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 unstartup systemd
        

        同样应该在 Mac 上工作(但内部命令看起来会有点不同)。

        【讨论】:

          【解决方案4】:

          好的,这对我有用:

          我删除了两个文件:

          • /Users/<username>/Library/LaunchAgents/io.keymetrics.PM2.plist
            这个在重启时注册命令pm2 resurrect

          • /Users/<username>/.pm2/dump.pm2
            我假设最后一个是由pm2 dump 创建的,如果没有此信息,即使 PM2 在重新启动时复活,也没有什么可以复活的?

          有人找到了更优雅的方法吗?

          【讨论】:

            【解决方案5】:

            使用 launchctl 卸载。

            launchctl -w unload ~/Library/LaunchAgents/io.keymetrics.PM2.plist
            

            【讨论】:

            • 文件存在,但我收到错误提示'launchctl: Error unloading: io.keymetrics.PM2'.. 我也试过 sudo..
            • launchctl -w load ~/Library/LaunchAgents/io.keymetrics.PM2.plist 然后再次卸载该文件。
            【解决方案6】:

            首先,使用以下方法获取所有正在运行的代理的列表:

            launchctl list | more

            或者,如果 pm2 代理使用相同的名称:

            launchctl list | grep pm2

            然后,一旦您获得了作为 launchd 一部分的 pm2 代理的名称,执行:

            sudo launchctl remove <pm2-agent-name>

            就是这样。如果您想在将来再次包含代理,您可以通过以下方式进行:

            sudo launchctl load <agent-name>

            【讨论】:

            • 感谢您的回答,但 io.keymetrics.PM2.plist 未显示在 launchctl 列表中显示的列表中。您认为它以其他名称显示在最后吗?我在 pm2 和 keymetrics 上尝试了 grep,还尝试在过滤掉苹果后手动查​​看列表..
            • 你确定你仔细看过这个列表吗?因为它应该在那里......
            • 是的,仔细检查:(
            • 我使用了“pm2 startup”,如我的问题中链接的 pm2 文档中所述。我已经更新了问题并添加了它在内部使用的命令。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-03-12
            • 2016-04-21
            • 1970-01-01
            • 1970-01-01
            • 2013-03-30
            • 2013-02-17
            • 2011-01-11
            相关资源
            最近更新 更多