如果pm2没有运行,我试图启动它,或者如果它正在运行,我如何在WINDOWS命令行界面中实现这种行为?在linux中有很多使用grep的解决方案,但在windows中没有,你知道如何获得这种行为吗?文档中说pm2 start -f app.js会杀死并启动应用程序,但实际上它只是创建了另一个示例。
pm2 start -f app.js
gijlo24d1#
使用此命令:
pm2 delete main.js 2> /dev/null && pm2 start main.js
这部分:2> /dev/null-将简单地将stderr重定向到/dev/null,意味着无处可去。
2> /dev/null
/dev/null
u0njafvf2#
似乎没有一个“单一命令”的方式来做到这一点,这在许多开发环境中是相当重要的,所以这里有一些选项:把索耶卡的建议放在一条线上。
pm2 stop myprocess; pm2 start myprocess.js
这将输出错误,但它将工作。他们的生态系统工具中也内置了此选项。
pm2 ecosystem
这将生成一个文件ecosystem.config.js,您需要确保其中的名称和脚本正确无误。然后,您可以使用以下命令:
ecosystem.config.js
pm2 startOrReload ecosystem.config.js
但是,我还想查看我的日志记录,因此我使用以下命令:
pm2 flush && pm2 startOrReload ecosystem.config.js && pm2 log
这也将刷新日志,因此您不会看到旧日志。
qqrboqgw3#
你可以做这样的事
pm2 delete your_app_name || : && pm2 start index.js -i 1 --name 'your_app_name'
:是一个null操作符,返回0成功退出代码。因此,无论发生什么情况,pm2 start命令都会执行(即使pm2 delete失败,对于应用程序还不存在的情况)。
:
pm2 start
pm2 delete
xurqigkl4#
我会这么做
pm2 stop myprocess.js #this will just say process not found pm2 start myprocess.js
如果你想清除一切:
pm2 kill pm2 stop
如果你想要更高级的可能性,请查看pm2 api。
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进程,如果存在,则重新启动该进程,如果不存在,则重新创建该进程。您可以更改if或else中的操作。希望对你有帮助。
5条答案
按热度按时间gijlo24d1#
使用此命令:
这部分:
2> /dev/null
-将简单地将stderr重定向到/dev/null
,意味着无处可去。u0njafvf2#
似乎没有一个“单一命令”的方式来做到这一点,这在许多开发环境中是相当重要的,所以这里有一些选项:
把索耶卡的建议放在一条线上。
这将输出错误,但它将工作。
他们的生态系统工具中也内置了此选项。
这将生成一个文件
ecosystem.config.js
,您需要确保其中的名称和脚本正确无误。然后,您可以使用以下命令:
但是,我还想查看我的日志记录,因此我使用以下命令:
这也将刷新日志,因此您不会看到旧日志。
qqrboqgw3#
你可以做这样的事
:
是一个null操作符,返回0成功退出代码。因此,无论发生什么情况,pm2 start
命令都会执行(即使pm2 delete
失败,对于应用程序还不存在的情况)。xurqigkl4#
我会这么做
如果你想清除一切:
如果你想要更高级的可能性,请查看pm2 api。
j7dteeu85#
此脚本检查是否存在名称为“appname”的PM2进程,如果存在,则重新启动该进程,如果不存在,则重新创建该进程。
您可以更改if或else中的操作。
希望对你有帮助。