crontab을 사용한 작업 예약, 그 시간 동안 컴퓨터가 종료되면 어떻게됩니까?


85

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

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

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


3
웹에서 anacron 자습서를 찾으려고했지만 좋은 자습서를 찾을 수 없었습니다. 매뉴얼 페이지를 살펴 보는 것도 큰 도움이되지 못했습니다. 기존 crontab을 anacron으로 변경하도록 기존 crontab을 어떻게 변경합니까? 또는 이것에 대한 튜토리얼은 매우 도움이 될 것입니다
seg.server.fault

1
몇 가지 예를 포함하도록 답변을 편집했습니다. 도움이 되길 바랍니다.
jeff

답변:


70

컴퓨터가 종료되거나 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이 즉시 물건을 발사하지 못하게하는 것이 좋습니다.


5
기본적으로 우분투는 anacron을 사용합니다.
3dinfluence

1
고마워, 3dincluence-기본 우분투 세트에서 anacron이 처리하는 crontab을 나타내는 조정 된 답변.
jeff

2
자체 crontab 항목이 아닌 /etc/cron.*/에 스크립트를 넣으면 "."가 없습니다. 스크립트의 파일 이름에. 데비안과 우분투는 run-parts를 사용하여 이러한 스크립트를 실행하며 기본적으로 run-parts는. 파일 이름-업그레이드에서 이름이 바뀐 .dpkg-old 및 .dpkg-dist 버전의 스크립트를 실행하지 않도록하기위한 것입니다. 따라서 "maint.sh"대신 스크립트 또는 심볼릭 링크 "maint"를 호출하십시오.
cas

OpenSUSE는 기본적 으로 11.2부터 현재 크로 니를 사용합니다 (현재 Tumbleweed / Leap 42.2까지). 를 사용하려면 패키지를 anacron설치하십시오 cronie-anacron.
palswim

13

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


5

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


2

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

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


2

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.