실행 시간이 동일한 크론 작업


8

여러 개의 cron 작업이 동시에 실행되도록 설정했다고 가정 해보십시오. 병렬 또는 병렬로 실행합니까?

(제 경우는 /etc/cron.d/mycronjobs 안에 넣은 cronjobs으로 데비안 짜기입니다).

답변:


7

완전성을 위해 /etc/cron.{hourly,daily,weekly,monthly}의 작업이 순차적으로 실행됩니다. run-parts 스크립트는이 디렉토리의 모든 파일을 반복합니다.

02 4 * * * root run-parts /etc/cron.daily

따라서 이름 지정 규칙 ( /etc/init.d/rc*.d예 : 번호 지정과 유사)과 함께이를 사용하여 작업이 순차적으로 실행되도록 할 수 있습니다.


동일한 파일 내에 여러 cron 작업이 있고 동시에 실행되도록 설정하면 어떻게됩니까?
Gabriele

"같은 파일 내"라는 말의 의미를 잘 모르겠습니다. 그러나 동일한 시간 사양을 가진 여러 줄이 있다는 것을 의미한다면 ( 0 * * * *앞에서 게시 한 것과 같이) 다른 게시물이 게시 한대로 실행 순서를 보장 할 수 없습니다. 멀티 코어 시스템에서 병렬로 실행될 수 있습니다. AFAIK의 실행 순서는 매일 다를 수도 있습니다. Run-parts와 함께 언급 한 명명 규칙이나 실제 백업 스크립트를 호출하는 마스터 스크립트를 사용하는 것이 스크립트가 특정 순서로 실행되도록하는 유일한 방법입니다.
Bram

그러면 스크립트가 하나씩 실행되는지 확인해야하므로 크론 작업에 의해 트리거되는 "마스터 스크립트"를 실행하고 기본 스크립트 내에서 스크립트를 호출 할 것입니다.
Gabriele

5

cron에 나열된 작업은 일반적으로 프로세스와 마찬가지로 병렬로 실행됩니다. 어떤 것이 먼저 시작되는지 확신 할 수있는 방법이 없으며, cron에서 작업 B가 시작되기 전에 작업 A가 완료되었는지 확인할 방법이 없습니다.


1
동일한 행에 나열하고 세미콜론으로 구분하여 태스크 B가 시작되기 전에 태스크 A가 완료되었는지 확인할 수 있습니다.
Nicholas

그렇다고 작업 A가 성공적으로 완료된 것은 아닙니다. 아마도 &&를 사용할 수도 있지만 이와 같은 것은 호출되는 스크립트에 의해 수행되어야합니다.
Sirch

bash 쉘이 지원하는 모든 피연산자를 사용할 수 있습니다. &&, || 또는; 사용 cron에서 내 경험에서 일반적인 관행입니다.
Nicholas

2

Cron은 지속적으로 실행되는 데몬 (서비스)입니다. 그러나 1 분에 한 번씩 크론 탭을 읽습니다.

작업이 실행되는 정확한 순서는 시스템 크론의 구현에 따라 다릅니다.

/etc/cron.d/에 배치 된 일부 배포 파일은 일반 crontab (5) 구문을 따르기 때문에 cron 타이머 설정을 검사합니다.

개별 작업이 실행되는 순서는 분명히 설정 한 일정에 따라 다릅니다.


스케줄이 다음과 같이 설정된 경우 : ---- 0 * * * * root sh / var / opt / backup_scripts / backup1-0 * * * * root sh / var / opt / backup_scripts / backup2 ---- 백업 1과 백업 2가 순차적으로 실행됩니까?
Gabriele

작업이 실행되는 정확한 순서는 시스템 크론의 구현에 따라 다릅니다. 자세한 내용은 남자 cron.
어댑터

맨 크론은 그것에 대해 아무것도 말하지 않습니다 (적어도 데비안에서는).
Gabriele

2

그들은 병렬로 실행됩니다. 다음 방법을 사용하여 프로세스를 순차적으로 실행할 수 있습니다.

# Use a semicolon to run command2 after command1 has completed
02 4 * * * /path/to/command1 ; /path/to/command2

# Use two ampersands to run command2 after command1 has completed successfully.
02 4 * * * /path/to/command1 && /path/to/command2

# Use two vertical rules to run command2 after command1 has completed unsuccessfully.
02 4 * * * /path/to/command1 || /path/to/command2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.