매 시간마다 Python 스크립트를 다시 시작하십시오.

매 시간마다 Python 스크립트를 다시 시작하십시오.

그래서 스크립트 이름(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 스크립트에 대한 서비스를 만듭니다. 이는 다른 애플리케이션이 올바른 순서 또는 적절한 시간에 시작되는 방식입니다.

systemdPython 스크립트용 서비스를 만든 다음 systemctl.

systemctl restart mypython
systemctl enable mypython

cron스크립트가 이런 방식으로 작동하게 되면 필요한 모든 작업을 수행하도록 설정할 수 있으며 , 아마도 서비스를 다시 시작하게 될 것입니다.

스크립트의 목표와 스크립트가 제대로 실행되고 있는지 확인하는 능력에 따라 서비스가 실행 중지되면 보고하도록 서비스를 향상하거나 다음과 같은 솔루션을 조사할 수도 있습니다.monit.


지적했듯이,이 답변유용한 정보를 제공하지만 rc.local. 를 사용하는 대신 systemd프로세스의 PID를 추적한 다음 해당 프로세스를 종료하고 매시간 스크립트를 다시 실행할 수 있습니다.

관련 정보