Как заставить BASH скрипт следить за сотней запущенных процессов?

Всем привет

Смастерил для своей специфической задачки вот такой вот sh-скрипт:

#! /bin/bash
if [ -e /home/user/pid/program1.pid ]
then
exit
else
nohup /home/user/start/program1 > /dev/null &
fi
if [ -e /home/user/pid/program1.pid ]
then
exit
fi
exit 0


Из содержимого видно, что скрипт следит за PID-ом запущенной программы и если он отсутствует, то программа рестартует. Скрипт запускается по крону раз в минуту.

Внимание вопрос: как мне адаптировать данный скрипт под 50 однотипных программ. От program1 до program50.

Прошу совета знатоков.
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 4
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Для отслеживания состояния демонов есть supervisor и watchdog, второй есть в составе systemd.
Ответ написан
sashkets
@sashkets
Прекратил отвечать после 24.02.2022
посмотрите на supervisord
Ответ написан
Комментировать
sim3x
@sim3x
Никак
Используйте systemd
Ответ написан
Комментировать
castomi
@castomi
Серверный администратор - tickets.settin.ru
Вообще ответы которые дали до меня очень дельные, но если Вам всё же надо именно так, то можно работать с параметрами.
#! /bin/bash
if [ -e $1 ];then
       exit
else
      nohup $2 > /dev/null &
fi
exit 0

и запускать скрипт так
scrypt $1 $2
Где $1 путь до пид, а $2 путь до бинарника проги, если из Вашего примера то вот так
scrypt /home/user/pid/program1.pid /home/user/start/program1

Параметры подставятся на места $1 и $2 в Вашем скрипте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы