crontab 작업을 동시에 실행할 수 있나요?

crontab 작업을 동시에 실행할 수 있나요?

예를 들어 매시간 실행되는 crontab 작업이 있는데 해당 작업을 완료하는 데 1시간 이상 걸릴 수 있는 경우 다음 작업이 실행되지 않습니까?

답변1

아니요, 일종의 잠금 메커니즘을 구현하지 않으면 cron 스크립트가 병렬로 실행됩니다.

바라보다한 번에 하나의 쉘 스크립트 인스턴스만 실행되도록 하는 빠르고 더러운 방법 그리고 쉘 스크립트의 잠금이 정확합니까?가능한 해결책을 찾으십시오.

더 쉬운 방법은 lockfile다음과 같이 사용하는 것입니다.답변 또는 런원 패키지(참조:이 답변) - 감사해요게티프딕추천하기 때문이죠.

답변2

게다가whenjobs그 목표는“강력하면서도 간단한 크론 대체품”. ~에서맨페이지:

사전 기능

작업이 실행되기 전에 "pre" 함수가 호출되도록 예약할 수 있습니다. 함수는 ("false"를 반환하여) 작업을 실행하지 않기로 결정할 수 있습니다.

이를 사용하는 방법 중 하나는 동일한 작업의 인스턴스가 이미 실행 중인 경우 특정 작업이 실행되는 것을 방지하는 것입니다.

job "only one"
pre (Whentools.one ())
every 10 seconds :
<<
  # Takes longer than 10 seconds to run, but 'Whentools.one ()'
  # will ensure only one is ever running.
  sleep 11
>>

(또한 제공하고 작업 인스턴스 실행을 Whentools.max n허용합니다 n. 기본적으로 Cron과 유사하게 작동합니다.)

관련 정보