【问题标题】:pm2 - How to start if not started, kill and start if startedpm2 - 如果未启动如何启动,如果启动则杀死并启动
【发布时间】:2021-06-25 20:46:43
【问题描述】:

如果pm2没有运行我想启动它,或者如果它运行就杀掉它并启动,如何在WINDOWS命令行界面中实现这种行为?

在 linux 中有很多使用 grep 的解决方案,但在 windows 中没有,关于如何获得这种行为的任何想法?

文档说pm2 start -f app.js 将杀死并启动应用程序,但实际上它只是创建另一个实例。

【问题讨论】:

标签: node.js windows pm2


【解决方案1】:

使用这个:

pm2 delete main.js 2> /dev/null &&  pm2 start main.js

这部分:2> /dev/null - 将简单地将标准错误重定向到/dev/null,意味着无处可去。

【讨论】:

  • 如果脚本没有运行,这将使脚本失败,尝试:pm2 delete main.js 2> /dev/null ||真的
【解决方案2】:

似乎没有“单一命令”的方式来做到这一点,这在许多开发环境中相当重要,所以这里有一些选项:

将soyuka的建议放在一行。

pm2 stop myprocess; pm2 start myprocess.js

这会输出错误,但它会起作用。

他们还在他们的生态系统工具中内置了这个选项。要使用它,请进入您正在使用的文件夹并运行

pm2 ecosystem

这将生成一个文件ecosystem.config.js,您需要确保其中的名称和脚本正确无误。

然后你可以使用命令:

pm2 startOrReload ecosystem.config.js

不过我也想查看我的日志,所以我使用了这个命令:

pm2 flush && pm2 startOrReload ecosystem.config.js && pm2 log

这也会刷新日志,因此您不会看到旧日志。

【讨论】:

    【解决方案3】:

    你可以这样做

    pm2 delete your_app_name || : && pm2 start index.js -i 1 --name 'your_app_name'
    

    : 是一个返回 0 成功退出代码的空运算符。所以无论发生什么,pm2 start 命令都会执行(即使pm2 delete 失败,对于应用程序尚不存在的情况)。

    【讨论】:

      【解决方案4】:

      我会这样做:

      pm2 stop myprocess.js #this will just say process not found
      pm2 start myprocess.js
      

      或者,如果您想清除所有内容:

      pm2 kill
      pm2 stop
      

      如果您想要更高级的可能性,请查看pm2 api

      【讨论】:

      • 嗨,process not found 部分导致错误,导致我的脚本的下一位无法执行...
      猜你喜欢
      • 1970-01-01
      • 2017-10-22
      • 2016-03-07
      • 2016-05-13
      • 2013-07-14
      • 2015-12-22
      • 2016-04-21
      • 2016-03-31
      • 2011-01-01
      相关资源
      最近更新 更多