여러 @daily crontab 항목이 순차적으로 처리됩니까?


22

매일 두 번의 작업을 지정된 순서대로 연속적으로 실행하고 싶습니다. 이 crontab이 내가 원하는 것을 안정적으로 수행합니까?

@daily job1
@daily job2

나는 그들이 다른 후 하나를 실행 있으리라 믿고있어,하지만 웹을 검색하거나 다음 맨 페이지의에서 답을 찾을 수 없습니다 : cron(1), crontab(1), crontab(5).

위의 crontab은 cron이 예약 된 것을 @daily병렬 또는 예측할 수없는 순서로 실행하면 분명히 원하는 것을 수행하지 않습니다 .

나는 단지 하나의 쉘 스크립트를 순서대로 발사 할 수 있다는 것을 알고있다. 나는 cron이 어떻게 작동 해야하는지 궁금하다. (테스트 데이터를 수집하거나 소스 코드를 읽기에는 너무 게으르다.)

크론은 cron패키지 에 의해 제공됩니다 . OS는 Ubuntu 10.04 LTS (서버)입니다.


cron패키지에서 어떤 cron이 제공되는지 알고 있습니까? 내가 아는 거의 모든 cron 데몬은 이것을 순서대로 처리하고 동 기적으로 일반적으로 먼저 각 파일을 알파벳 순서로 파싱합니다 (일부는 오름차순으로 실행 간격이 시간에 따라 다르지만 내부 작업은 행 순서로 수행합니다).
Chris Down

5
그것이 지정되지 않았다는 사실은 일반적으로 구현에 달려 있다는 것을 의미하며 일반적으로 그러한 행동에 의존하지 않는 것이 가장 좋습니다. 별도의 crontab 항목이 아니라 자체 스크립트에서 시퀀스가 ​​중요한 작업 시퀀스를 배치하는 것이 더 깨끗하고 체계적 일 수 있습니다.
jw013

@ChrisDown : Vixie Cron이라고 생각합니다. packages.ubuntu.com/lucid/cron
Adam Monsen

1
실제로 순서대로 실행하려면 1 분 후에 실행하십시오.
Kevin

@ jw013과 Kevin : 동의하지만 그건 내 질문이 아닙니다.
Adam Monsen

답변:


26

소스를 잠깐 살펴본 후 (데비안 스퀴즈에서 동일한 버전이라고 생각) 주어진 파일 내의 항목처럼 보이며 같은 시간에 순서대로 실행됩니다. 이러한 목적을 위해, @daily그리고 0 0 * * *(사실상 동일 @daily동일 0 0 * * *크론에서).

나는 전반적으로 이것에 의존하지 않을 것입니다. 언젠가 누군가 cron이 작업을 병렬로 실행하여 31 개의 코어가 유휴로 실행되는 32 코어 CPU를 이용하기로 결정할 수도 있습니다. 이것은 cron 소스에서 발견 된이 20 년 된 todo 항목을 구현할 때 수행 될 수 있습니다.

이들 모두 플래그를 지정하고로드를 제한해야합니다. 즉, "0 * * * *"를 의미하는 @hourly 대신 "시스템로드가 낮을 때까지는 안된다"는 의미는 매시간 앞쪽에 있음을 의미해야합니다. (…) (vix, jan90)

@daily job1; job2여기 에 쓰는 것은 매우 쉽습니다 . 작업이 순서대로 실행되는 것이 중요하다면, 작성한 내용에 직접적인 영향을 미치십시오.

또한 주문을 명시 적으로 작성하면 향후 관리자가 중요하지 않다고 생각하는 라인을 재정렬 할 위험이 제거됩니다.


5

http://ss64.com/osx/crontab.html (및 기타 참조)에 따르면 @daily는 다음과 같습니다.

0 0 * * *

자정에 달리라고합니다 나는 이런 종류의 두 줄이 가능한 한 자정에 가깝게 시작될 것이라고 예상 할 것이다. 나는 그의 의견에서 jw013의 제안에 동의합니다.

그것이 지정되지 않았다는 사실은 일반적으로 구현에 달려 있다는 것을 의미하며 일반적으로 그러한 행동에 의존하지 않는 것이 가장 좋습니다. 별도의 crontab 항목이 아니라 자체 스크립트에서 시퀀스가 ​​중요한 작업 시퀀스를 배치하는 것이 더 깨끗하고 체계적 일 수 있습니다.


감사합니다. @ jw013의 제안이 유효하지만 동의 한 것은 아닙니다. 필자는 실제로 구현에 따라 결정적인 답변을 얻기 위해 실제 소스를 참조해야한다고 생각합니다.
Adam Monsen

0

@Giles는 스크립트를 가져 와서 순서대로 실행할 때 단일 스크립트를 사용하는 것에 대해 언급합니다.

cron.daily파일은 런타임을 지정하지 않습니다. 그들이 연속적으로 실행되는 것은 내 경험이었습니다. 랩톱이나 다른 시스템에서 실행될 수있는 많은 백그라운드 작업이 의미가 있습니다.

시간이 지정되면 현재 분으로 예약 된 모든 작업이 실행됩니다. 다른 시간을 사용하는 것이 좋습니다.

상호 배타적 인 작업이있는 경우 잠금 파일을 사용하여 다른 작업이 실행 중인지 확인하는 것이 일반적입니다.


@daily와 약간 다릅니다 /etc/cron.daily. 전자는 crontab에서 사용하기위한 대체 구문입니다. 또한 살펴보십시오 run-parts. 내 시스템은 run-parts에서 프로그램을 실행 하는 데 사용 합니다 /etc/cron.daily. run-parts(8)맨 페이지 에 따르면 , "파일은 이름의 어휘 정렬 순서로 실행됩니다 ...".
Adam Monsen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.