9

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

3 ответа3

11

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

crontab -e

затем

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

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

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

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

0

У меня похожая проблема в том, что мой сайт подвергается атакам ботов, которые используют все мои процессы httpd.

Я сделал простой сценарий оболочки, чтобы справиться с ним, убивая все процессы httpd каждые десять минут. (Я знаю, это не правильное исправление, но я меняю провайдеров на того, который даст мне надлежащую поддержку брандмауэра, поэтому я не хочу вкладывать что-то в правильное исправление прямо сейчас.)

Это то, что я использую:

while [ 1 ]; do  uptime; killall httpd; psg httpd | wc; sleep 600; done

Команды "uptime" и "psg httpd | wc" просто обеспечивают трассировку на терминале и не нужны. "psg" - это функция, которая просто запускает ps и ищет его в качестве аргумента, поэтому выводит количество запущенных экземпляров процесса "httpd".

Для ваших целей все, что вам нужно, это "killall" и заменить "600" на количество секунд, которое вы хотите подождать между уничтожением процессов.

while [ 1 ]; do killall name_of_executable; sleep 600; done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .