NodeJS pm2 -如果未启动,如何启动,如果已启动,则杀死并启动

rdlzhqv9  于 2023-03-29  发布在  Node.js
关注(0)|答案(5)|浏览(215)

如果pm2没有运行,我试图启动它,或者如果它正在运行,我如何在WINDOWS命令行界面中实现这种行为?
在linux中有很多使用grep的解决方案,但在windows中没有,你知道如何获得这种行为吗?
文档中说pm2 start -f app.js会杀死并启动应用程序,但实际上它只是创建了另一个示例。

gijlo24d

gijlo24d1#

使用此命令:

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

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

u0njafvf

u0njafvf2#

似乎没有一个“单一命令”的方式来做到这一点,这在许多开发环境中是相当重要的,所以这里有一些选项:
把索耶卡的建议放在一条线上。

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

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

qqrboqgw

qqrboqgw3#

你可以做这样的事

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

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

xurqigkl

xurqigkl4#

我会这么做

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

如果你想清除一切:

pm2 kill
pm2 stop

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

j7dteeu8

j7dteeu85#

# checking if 'appname' running in pm2

PM2_EXIST=$(if pm2 list 2> /dev/null | grep -q appname; then echo "Yes" ; else echo "No" ; fi)

if [ $PM2_EXIST = Yes ] ; then
    pm2 restart appname
    echo "Restart appname."
else
    pm2 start file.js --name appname
    echo "Started appname."
fi

此脚本检查是否存在名称为“appname”的PM2进程,如果存在,则重新启动该进程,如果不存在,则重新创建该进程。
您可以更改ifelse中的操作。
希望对你有帮助。

相关问题