anacron은 매일, 매주, 매월 실행할 작업을 어떻게 결정합니까?

anacron은 매일, 매주, 매월 실행할 작업을 어떻게 결정합니까?

anacron은 매일, 매주, 매월 실행할 작업을 어떻게 결정합니까?

  1. anacron은 이전 작업의 어느 시간을 사용하여 작업을 다시 실행할지 여부를 결정합니다(이전 작업의 시작 시간 또는 완료 시간)? anacron은 종료 시간만 사용하고 cron은 시작 시간만 보는 것이 맞습니까?
  2. 매일은 24시간을 의미합니까, 아니면 일일 작업을 실행할 수 있는 다른 달력일을 의미합니까?

    주간은 정확히 7일을 의미합니까, 아니면 주간 작업을 실행하는 다른 주입니까?

    월별은 정확히 30일을 의미합니까, 아니면 월별 작업을 실행하는 달이 다른 달입니까?

    타임스탬프 파일은 하루까지만 정확하므로 일일 질문에 대한 답변은 24시간이 아닌 다른 "달력" 날짜인 것 같습니다.

    $ sudo cat /var/spool/anacron/cron.daily 
    20181101
    $ sudo cat /var/spool/anacron/cron.weekly 
    20181028
    $ sudo cat /var/spool/anacron/cron.monthly 
    20181011
    

몇 가지 예. 일일 작업이 오늘 오전 4시에 실행되기 시작하고 anacron이 내일 아침 오전 6시에 한 번만 실행된다고 가정해 보겠습니다.

  • 오늘 오전 11시에 작업 실행이 완료되면 anacron은 작업 실행 여부를 결정하는 데 시작 시간 또는 종료 시간 중 어느 시간을 사용합니까?

  • 오늘 오전 5시에 작업 실행이 완료되면 anacron이 그 시간에 작업을 실행하기로 결정합니까?

  • 내일 오전 3시에 작업 실행이 끝나면 anacron은 그 시간에 작업을 실행하기로 결정합니까?

감사해요.

답변1

anacron은 정의된 기간 내에 작업이 실행되지 않으면 작업을 실행합니다. 따라서 7일마다 실행되도록 정의된 작업은 지난 7일 동안 실행되지 않은 경우 실행됩니다. anacron은 단순히 달력 날짜를 보고 계산됩니다. 마지막 실행의 타임스탬프를 로드하고 현재 "일 수"를 계산한 다음 그 둘을 뺍니다.

  1. anacron은 작업이 실행된 후 타임스탬프를 업데이트하므로 해당 작업이 다시 실행되지 않아야 하는 기간의 시작으로 완료 날짜를 사용합니다. cron은 현재 날짜와 시간을 지정된 시작 지정자와만 비교하므로 예, 시작 시간만 고려합니다.

  2. 매일은 작업이 마지막으로 실행된 시간이 어제 또는 이전이어야 함을 의미합니다. 매주는 작업이 7일 이상 전에 마지막으로 실행되어야 함을 의미합니다. 매달 조금씩 다릅니다. 이는 작업이 마지막으로 실행된 시간이 되어야 함을 의미합니다.N며칠 전이나 그 이전에 어디에서N는 이전 달의 일수이며, 경과된 일수가 이번 달의 일수와 정확히 같을 때 무시됩니다.

    귀하의 예를 들면 다음과 같습니다.

    • 오늘 오전 11시 또는 오전 5시에 완료된 일일 작업은 내일 다시 실행됩니다.
    • 내일 오전 3시에 완료된 일일 작업은 모레 다시 실행됩니다.

관련 정보