crontab을 사용한 작업 예약, 그 시간 동안 컴퓨터가 종료되면 어떻게됩니까? 각 cron 작업이 실행됩니까? 아니면 해당

crontab을 사용하여 일부 작업을 예약합니다.

cron이 무언가를하도록 예약 된 시간 동안 컴퓨터가 종료되거나 꺼지면 어떻게됩니까?

컴퓨터를 켠 후 누락 된 각 cron 작업이 실행됩니까? 아니면 해당 날짜의 누락 된 작업이 무시됩니까? 누락 된 작업이 다시 시작되지 않으면 컴퓨터를 다시 켠 후 누락 된 작업을 실행하도록 cron을 구성 할 수있는 방법이 있습니까?



답변

컴퓨터가 종료되거나 cron 데몬이 실행되고 있지 않으면 cron 작업이 시작되지 않습니다.

컴퓨터가 종료 된 시간 동안 사실 이후에 실행하려는 작업이있는 경우 anacron을 사용하십시오. 기본적으로 설치됩니다. 자세한 내용은 “man anacron”, “man anacrontab”또는 / etc / anacrontab 파일을 참조하십시오.

우분투는 다음의 crontab 항목에 기본적으로 anacron을 사용합니다.

/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

나머지 크론 탭을 메인 크론 데몬이 처리하도록 남겨 두십시오.

/etc/crontab
/etc/cron.d
/var/spool/cron

노트

Anacron 자체는 데몬으로 실행되지 않지만 시스템 시작 스크립트와 cron 자체를 사용하여 실행됩니다.

우분투 8.04 상자에서 부팅시 /etc/init.d/anacron이 실행되고 매일 아침 07:30에 cron이 실행됩니다.

/usr/share/doc/anacron/README.gz의 README는 맨 페이지에 포함 된 것보다 약간 더 많은 정보를 가지고 있습니다.

실시 예

간단한 “daily”, “weekly”, “monthly”작업의 경우 위의 /etc/cron.{daily|weekly|monthly} 디렉토리 중 하나에 스크립트의 사본 또는 심볼릭 링크를 넣으십시오. Anacron은 매일 / 매주 / 매월 실행하도록 관리하며 “주간”스크립트가 정상적으로 실행되는 날에 컴퓨터가 꺼져 있으면 다음에 컴퓨터를 켤 때 실행됩니다.

다른 예로, 여기에 스크립트가 있다고 가정하면 /usr/local/sbin/maint.sh

그리고 3 일마다 실행하려면 / etc / crontab의 표준 항목은 다음과 같습니다.

# m h dom mon dow user  command
0 0 */3 * * root /usr/local/sbin/maint.sh

매월 3 일 00:00에 컴퓨터가 켜져 있지 않으면 작업은 6 일까지 실행되지 않습니다.

컴퓨터가 꺼져 있고 3 일에 실행을 “누락”할 때 작업이 4 일에 실행되도록하려면 / etc / anacrontab에서이를 사용하십시오 (/ etc / crontab에서 행을 제거하는 것을 잊지 마십시오).

# period delay job-identifier command
3 5 maint-job /usr/local/sbin/maint.sh

위의 “5”의 “지연”은 anacron이이 작업을 실행하기 전에 5 분 동안 대기 함을 의미합니다. 부팅시 anacron이 즉시 물건을 발사하지 못하게하는 것이 좋습니다.


답변

사용하는 cron 스케줄러에 따라 다릅니다. 기본 vanilla cron 데몬은 시스템 다운 타임으로 인해 누락 된 작업을 실행하지 않습니다. 그러나이 상황을 위해 특별히 설계된 다른 cron 스케줄러가 있습니다. 가장 일반적인 두 가지 예는 anacronfcron 입니다.


답변

컴퓨터가 꺼져있는 동안 예약 된 작업은 컴퓨터 전원을 다시 켤 때 실행되지 않습니다.


답변

크론 작업이 실행되는 동안 종료하면 시스템이 종료되고 크론 작업이 중지됩니다 (또는 실행되지 않습니다).

체크인 할 수있는 대안 중 하나는 anacron입니다.


답변

실제로 실행중인 크론 데몬에 따라 다릅니다. Vixie-cron은 놓친 cronjob을 건너 뜁니다. fcron 은 최대한 빨리 누락 된 크론 을 실행합니다. IIRC는 vixie-cron을 기반으로하므로 찾고있는 것이라면 fcron을 확인하십시오.


답변