перезапускать программу каждые х минут?


10

У меня есть многопоточная Java-программа, которая использует библиотеку с открытым исходным кодом, и в этой библиотеке есть некоторые ошибки, которые приводят к тупику. Я сообщил об ошибке, но для ее исправления потребуется время, мне нужно будет продолжать использовать эту программу и до тех пор, пока она перезагружается каждые 2-3 часа, это сделает работу за меня. Есть ли способ заставить программу перезапускаться каждые х минут?


3
Вы можете написать скрипт, который будет убивать и перезапускать задачу каждые 2-3 часа.
gt6989b

Чтобы узнать, что @ gt6989b, я бы написал скрипт на Python, который просто зацикливался и ждал, пока пройдет 2-3 часа, а затем перезапускал программу. Вы можете найти полезными подпроцесс Python и sh .
Прорыв

Ответы:


12

Вы можете попробовать сделать в своем crontab:

crontab -e

тогда

 11 */3 * * * /usr/bin/pkill -f appli_name; /path/to/appli_name & &>/dev/null

Команда crontabозначает:

  • каждые 3 часа
  • убить appli_name
  • начать appli_name в фоновом режиме

Вот как я сейчас решаю подобную проблему. Я перезапускаю определенное программное обеспечение каждую ночь в 0:00 через cron, так как оно имеет тенденцию портить свой файл состояния через 4-5 дней. Я установил программное обеспечение как службу, а затем запустил service <appname> restart > /dev/null 2>&1в нужное время.
Даниэль Андерссон

2

Я предлагаю вам настроить Supervisor для вашей задачи. Он может отслеживать процесс, перезапускать его в случае сбоя, а также обеспечивает перенаправление вывода и другие полезные функции. Смотрите пример для программы, чтобы начать.


+1, это, кажется, более «чистое» решение, чем crontab(хотя оба решения работают просто отлично). Однако я считаю, что Supervisor лучше настраивает, какие сигналы отправлять процессу и когда (т.е. когда отправлять SIGTERMи как долго ждать перед отправкой SIGKILLи т. Д.).
Прорыв
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.