Таким образом, у меня есть сценарий Python, который я запускаю в терминале, просто введя имя сценария (Python SCRIPTNAME.py)
Я просто задаюсь вопросом, действительно ли возможно сделать сценарий или задание крона, которое просто просто останавливается, затем запускает тот сценарий Python каждый час?
Похоже, вы хотите демонизировать или создать сервис для вашего скрипта Python. Именно так запускаются другие приложения, и в правильном порядке, или в нужное время.
Вы захотите создать сервис systemd
для вашего скрипта Python, а затем связываться с ним через systemctl
.
systemctl restart mypython
systemctl enable mypython
Как только ваш скрипт будет работать таким образом, вы можете настроить cron
на то, что вам нужно, что, вероятно, приведет к перезапуску сервиса.
В зависимости от цели вашего сценария и вашей способности определить, правильно ли он работает, вы можете улучшить свой сервис, чтобы сообщать о его остановке или даже искать решения, такие как monit
.
Как указано, этот ответ предоставляет полезную информацию, но содержит устаревшие инструменты, такие как rc.local
. Вместо использования systemd
вы можете отслеживать PID процесса, а затем завершать этот процесс и перезапускать свой скрипт каждый час.
Наилучшим подходом будет использование 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
.