다른 답변, 특히 @soulcake가 게시 한 링크 : 너무 짧은 간격으로 장시간 실행되는 명령을 예약하면 첫 번째 명령이 완료되기 전에 두 번째 명령이 행복하게 실행됩니다 (명령에 어떤 종류의 뮤텍스가 구현되어 있지 않은 한) .
이로 인해 원래 명령이 더 느려져 이전 인스턴스가 완료되기 전에 다른 인스턴스가 실행되는 경우가 있습니다. 또는 다른 이유로 바람직하지 않을 수 있습니다.
방지하는 일반적인 방법은 이전 명령이 실행되고 있지 않도록 가드를 사용하여 명령을 실행하는 것입니다. 예를 들면 다음과 같습니다.
10 * * * * pgrep my_slow_command >/dev/null || /usr/local/bin/my_slow_command
pgrep이 실행될 때 pgrep이 명령 이름과 일치하는지 확인하십시오. 예를 들어 python 스크립트는 실행 파일 이름으로 python을 갖습니다. 아마도 충분히 구체적이지 않으며 python의 스크립트 이름과도 일치해야합니다.
10 * * * * pgrep -f my_script.py || /usr/local/bin/my_script.py
( '-f'옵션이없는 pgrep는 bash 스크립트 이름과 일치합니다)
어떤 이유로 pgrep을 사용할 수없는 경우 :
10 * * * * ps ax | grep [m]y_command || /usr/local/bin/my_command
대괄호는 grep 명령 자체와 일치하지 않도록하기 위해 사용됩니다.