1

У меня есть скрипт Python, запущенный на удаленной машине, периодически он перестает отвечать, поэтому я запускаю ssh, убиваю существующий процесс, а затем перезапускаю его. Я должен делать это несколько раз в неделю, и это вызывает длительные периоды простоя, когда меня нет рядом. Я хотел бы перезапускать его каждый час с помощью cron - но перезапуск не сработает, если я сначала не убью процесс. Как мне убить процесс с помощью cron? Или было бы более эффективное решение.

2 ответа2

4

Простой способ разрешить уничтожение и перезапуск вашего процесса - это команда killall -9 $name_of_binary .

Более сложным способом является создание файла с PID процесса. Например, это можно запустить так:

$name_of_binary &
echo $! > $pidfile

Тогда процесс можно убить так:

kill -9 $(cat $pidfile) && rm $pidfile

Вы также можете включить проверки, что $pidfile не существует до запуска вашего процесса & c.

1

Эффективным способом является изменение вашего скрипта, когда он закрывает все входные потоки, сокеты и тому подобное, а затем открывает его снова (как полный перезапуск).

Но твой путь тоже хорош, вот как ты это делаешь: man killall

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