루프에서 실행되는 스크립트가 있습니다. ./run_my_script를 사용하여 명령줄에서 스크립트를 수동으로 쉽게 시작할 수 있지만 때로는 스크립트가 작동 중지되어 다시 시작해야 하는 경우도 있습니다. 그래서 Ctrl-C를 누르고 재부팅했습니다. 이제 정기적으로 스크립트를 중지하고 다시 시작하는 cron을 만들고 싶습니다. 그래서 내 cron에 다음을 입력합니다.
00 * * * * pkill -f ./run_my_script && /bin/sleep 15 && ./run_my_script
이것은 작동하지 않습니다. 스크립트가 종료되지만 다시 시작되지는 않으므로 다음을 시도합니다.
00 * * * * pkill -f ./run_my_script
00 * * * * /bin/sleep 15 && ./run_my_script
이것도 작동하지 않습니다. 스크립트를 종료하지만 다시 시작하지는 않습니다. 그래서 나는 다음을 시도한다:
00 * * * * pkill -f ./run_my_script
01 * * * * /bin/sleep 15 && ./run_my_script
그리고 그것은 훌륭하게 작동합니다. 문제는 종료와 재시작 사이에 1분이 아니라 몇 초만 필요하다는 것입니다. 어떻게 해야 합니까?
답변1
pkill
"하나 이상의 프로세스가 기준을 충족"하는 경우에만 상태 0으로 종료됩니다. 즉 ./run_my_script
, 아직 실행되지 않은 경우 &&
첫 번째
pkill -f ./run_my_script && /bin/sleep 15 && ./run_my_script
나머지 부품이 작동하지 않게 됩니다.
and 대신 세미콜론을 사용하면 작동합니다.
pkill -f ./run_my_script ; /bin/sleep 15 && ./run_my_script
답변2
그래서 이것을 시도했는데 작동했습니다.
00 * * * * /bin/sleep 45 && pkill -f ./run_my_script
01 * * * * ./run_my_script