@astrotrain

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

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

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

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

Войти через TM ID
Похожие вопросы