pm2 - Как запустить если не запустился, убить и запустить если запустился

Я пытаюсь запустить pm2, если он не запущен, или убить его и запустить, если он запущен. Как добиться такого поведения в интерфейсе командной строки WINDOWS?

Есть много решений, использующих grep в Linux, но ничего для Windows, есть идеи, как добиться такого поведения?

В документации сказано, что pm2 start -f app.js убьет и запустит приложение, но на самом деле он просто создает другой экземпляр.


person Bryan Arbelo - MaG3Stican    schedule 12.01.2016    source источник
comment
почему бы просто не убить в любом случае?   -  person jack3694078    schedule 12.01.2016
comment
Пожалуйста, прочтите эту ссылку, там много команд, github.com/Unitech/pm2   -  person BlackMamba    schedule 12.01.2016


Ответы (4)


Использовать это:

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

Эта часть: 2> /dev/null — просто перенаправит stderr на /dev/null, то есть в никуда.

person GarryOne    schedule 27.03.2020
comment
Это приведет к сбою сценария, если он не запущен, попробуйте: pm2 delete main.js 2› /dev/null || истинный - person Dirigible; 07.04.2020

Похоже, что для этого не существует «одной команды», что довольно важно во многих средах разработки, поэтому вот несколько вариантов:

поместите предложение Союки в одну строку.

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

Это также очистит журналы, чтобы вы не видели старые журналы.

person trex005    schedule 08.08.2018

Я бы сделал это:

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

Или, если вы хотите очистить все:

pm2 kill
pm2 stop

Если вам нужны дополнительные возможности, ознакомьтесь с api pm2.

person soyuka    schedule 12.01.2016
comment
Привет, часть process not found приводит к ошибке, которая препятствует выполнению следующего бита моего скрипта... - person GLAND_PROPRE; 15.02.2019

Вы можете сделать что-то вроде этого

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

: — это нулевой оператор, который возвращает 0 код успешного выхода. Поэтому, что бы ни случилось, команда pm2 start будет выполнена (даже если pm2 delete завершится ошибкой, если приложение еще не существует).

person Hasneet Singh    schedule 09.01.2021