У меня есть скрипт Python, запущенный на удаленной машине, периодически он перестает отвечать, поэтому я запускаю ssh, убиваю существующий процесс, а затем перезапускаю его. Я должен делать это несколько раз в неделю, и это вызывает длительные периоды простоя, когда меня нет рядом. Я хотел бы перезапускать его каждый час с помощью cron - но перезапуск не сработает, если я сначала не убью процесс. Как мне убить процесс с помощью cron? Или было бы более эффективное решение.
2 ответа
4
Простой способ разрешить уничтожение и перезапуск вашего процесса - это команда killall -9 $name_of_binary
.
Более сложным способом является создание файла с PID процесса. Например, это можно запустить так:
$name_of_binary &
echo $! > $pidfile
Тогда процесс можно убить так:
kill -9 $(cat $pidfile) && rm $pidfile
Вы также можете включить проверки, что $pidfile
не существует до запуска вашего процесса & c.
1
Эффективным способом является изменение вашего скрипта, когда он закрывает все входные потоки, сокеты и тому подобное, а затем открывает его снова (как полный перезапуск).
Но твой путь тоже хорош, вот как ты это делаешь: man killall