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


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.