PM2: Возвращает список остановленных процессов и перезапускает только их

#grep #pm2 #restart #reboot

Вопрос:

В основном название. Недавно я заметил, что некоторые из наших процессов обнаруживают ошибку при запуске сервера, которая приводит к их остановке и из-за которой pm2 не перезапускает их автоматически. Бег pm2 restart process name возвращает их обратно. В качестве меры остановки, пока я исследую первопричину, я хотел бы настроить сценарий для использования перезапуска pm2 только для остановленных процессов, который будет использоваться при перезагрузке сервера. До сих пор мне удавалось извлечь список остановленных процессов и их статус:

 pm2 ls | grep "stopped" | grep "process"  

Однако после этого я не уверен, как продолжить использование перезапуска pm2 в процессах. Мне нужно будет извлечь имена процессов в список и просмотреть его, или есть лучший способ сделать это?

Ответ №1:

Вы можете использовать следующую командную строку:

 pm2 ls | grep "stopped" | grep "process" | awk '{print $4}' | xargs -I{} pm2 start {}  
  • pm2 ls получает список всех процессов.
  • grep "stopped" | grep "process" фильтрует все строки, в которых остановлено слово, и все строки, в которых есть слово процесса.
  • awk '{print $4}' получает четвертый столбец в строке, имея такой формат для каждой строки это:
     | 20 | process_name | ... ^ ^ ^ ^ ^ 1 2 3 4 5 ...  
  • xargs -I{} pm2 start {} получает каждую строку результата и передает их pm2 start команде.