@astrotrain

Как в кроне отслеживать статус скрипта и по необходимости его перезапускать?

У меня в кроне такая запись, но она постоянно плодит скрипты:
*/10 * * * * ps aux|grep my_script| grep -v grep || exec /home/my_script > /home/log.txt &";

Как можно сделать так чтобы нормально проверялось, запущен ли экземпляр скрипта и при необходимости его запускать?
pidof использовать нельзя, потому что зачастую на машинах его нету. Правда есть pgrep. Но хотелось бы рещение через ps.
  • Вопрос задан
  • 329 просмотров
Пригласить эксперта
Ответы на вопрос 4
doublench21
@doublench21
Ну так причём тут крон? Ты просто в кроне укажи sh скрипт на запуск. А в самом скрипте уже делай проверки какие ты хочешь. Можешь писать pid запущенного в файл и искать перед запуском такой среди запущенных. Или наверное можно по имени найти в списке процессов. Вообщем все в твоих руках.
Ответ написан
3vi1_0n3
@3vi1_0n3
У вас не факт, что результат работы пайпа будет равен не нулю, поскольку это будет код возврата последней команды в пайпе.
Попробуйте как-то так:
*/10 * * * * [ "$(ps ax | grep my_script | grep -v grep)" == "" ] &&  /home/my_script > /home/log.txt &";
Ответ написан
Комментировать
@pfg21
ex-турист
написать системд-сервис для для my_script
тогда состояние сервиса можно отсматривать через простые консольные команды.
Но эффективнее прописать перезапускание сервиса при крахе.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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