#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
команде.