그래서 스크립트 이름(python SCRIPTNAME.py)만 입력하여 터미널에서 실행하는 Python 스크립트가 있습니다.
매 시간마다 Python 스크립트를 중지했다가 시작하는 스크립트 또는 크론 작업을 만드는 것이 가능한지 궁금합니다.
답변1
timeout
가장 좋은 접근 방식은 다음과 같이 GNU를 사용하는 것입니다 .
timeout -k 3600 python3 /path/to/script.py
여기서 -k는 "kill after"와 시간(초)을 나타냅니다.
따라서 매시간 스크립트를 실행하고 종료하고 다시 시작하려면 다음을 수행할 수 있습니다.
while timeout -k 3600 python3 /path/to/script; do
sleep 2
done
sleep 2
다시 시작하기 전에 약간의 지연을 추가하는 것뿐입니다 .
또는 대신 Python의 스레딩 모듈을 사용하여 스크립트의 관련 부분을 예약하는 것을 고려해 보세요. 보다 https://stackoverflow.com/a/50537798/3701431
답변2
당신이 원하는 것 같네요악마화하다, 또는 Python 스크립트에 대한 서비스를 만듭니다. 이는 다른 애플리케이션이 올바른 순서 또는 적절한 시간에 시작되는 방식입니다.
systemd
Python 스크립트용 서비스를 만든 다음 systemctl
.
systemctl restart mypython
systemctl enable mypython
cron
스크립트가 이런 방식으로 작동하게 되면 필요한 모든 작업을 수행하도록 설정할 수 있으며 , 아마도 서비스를 다시 시작하게 될 것입니다.
스크립트의 목표와 스크립트가 제대로 실행되고 있는지 확인하는 능력에 따라 서비스가 실행 중지되면 보고하도록 서비스를 향상하거나 다음과 같은 솔루션을 조사할 수도 있습니다.monit
.
지적했듯이,이 답변유용한 정보를 제공하지만 rc.local
. 를 사용하는 대신 systemd
프로세스의 PID를 추적한 다음 해당 프로세스를 종료하고 매시간 스크립트를 다시 실행할 수 있습니다.