Итак, у меня есть скрипт Python, который я запускаю в терминале, просто набрав имя скрипта (python SCRIPTNAME.py)
Мне просто интересно, возможно ли создать скрипт или задание cron, которое просто останавливает, а затем запускает этот скрипт Python каждый час?
решение1
Лучшим подходом будет использование GNU, timeout
как в
timeout -k 3600 python3 /path/to/script.py
где -k означает «убить после», а время указано в секундах.
Итак, чтобы скрипт запускался, завершался и перезапускался каждый час, вы можете сделать следующее:
while timeout -k 3600 python3 /path/to/script; do
sleep 2
done
где sleep 2
просто добавить небольшую задержку перед перезапуском
В качестве альтернативы можно рассмотреть возможность использования модуля Threading в Python для планирования соответствующих частей скрипта. См. https://stackoverflow.com/a/50537798/3701431
решение2
Звучит так, как будто ты хочешьдемонизировать, или создайте службу для вашего скрипта Python. Так запускаются другие приложения, в правильном порядке или в правильное время.
Вам нужно будет создать systemd
службу для вашего скрипта Python, а затем взаимодействовать с ним через systemctl
.
systemctl restart mypython
systemctl enable mypython
Как только ваш скрипт заработает таким образом, вы сможете выполнить cron
необходимые действия, например, перезапустить службу.
В зависимости от цели вашего скрипта и вашей способности определять, работает ли он должным образом, вы можете усовершенствовать свой сервис, чтобы он сообщал, если он перестает работать, или даже рассмотреть такие решения, какmonit
.
Как было отмечено,этот ответпредоставляет полезную информацию, но содержит устаревшие инструменты, такие как rc.local
. Вместо использования systemd
, вы можете отслеживать PID процесса, а затем убивать этот процесс и перезапускать свой скрипт каждый час.