2009-11-04 6 views
1

우수한 CronEdit 보석을 사용하여 Ruby에서 Crontab 용 웹 프론트 엔드를 작성하려고합니다. 딜론 크론 (Dillon Cron)의 crontab 소스 코드를 살펴보고 특정 파일을 업데이트하여 다음 스윕 중에 데몬이 크론리스트를 새로 고침한다는 것을 알았습니다. 그 스풀 디렉토리의 modtime (또는/etc/crontab을에 modtime)가 변경된 경우프로그래밍 방식으로 crontab을 편집하고 데몬을 강제로 새로 고침

는 또한 크론 검사 분마다보고하고,이 경우 : VixieCron에 대한 남자의 crontab에서

, 그것은 말한다 그러면 cron은 의 모든 crontab에서 modtime을 검사하고 변경된 내용을 다시로드합니다. 따라서 crontab 파일이 수정 될 때마다 cron을 다시 시작할 필요가 없습니다. crontab (1) 명령은 이 crontab을 변경할 때마다 스풀 디렉터리의 modtime을 업데이트합니다.

수동으로 Cron 파일을 편집 한 후 데몬이 오류없이 그것을 새로 고칠 수있는 플랫폼 (Ubuntu, Red Hat, ArchLinux, Mac OS X)과 독립적 인 방법이 있습니까?

답변

2

감사합니다. gnibbler와 Aaron. Ruby에 대한 '언제나'와 'cronedit'보석 모두에 대한 소스 코드를 살펴 보았습니다. 둘 다 기존 cron 파일을 업데이트 된 cron 항목으로 대체하는 'crontab -'을 수행합니다. 즉, 원래의 질문과는 달리,이 라이브러리는 데몬을 새로 고치는 데 필요한 세부 사항을 수행하는 표준 crontab 도구를 사용합니다.

나는 최상의 플랫폼 독립적이며 cron (dillon, vixie, mcron 등)의 불가지론 적 방법으로 데몬을 새로 고치는 것이 항상 관련 crontab 유틸리티를 사용하는 것이라고 생각합니다. 프로그래밍 방식으로 편집 할 때도 사용자 프로그램은 새로운 cron 파일을 특정 플랫폼/cron에 필요한 모든 작업을 수행하는 crontab 유틸리티로 전달해야합니다.

@ 마크, 의견을 주셔서 감사합니다.그러나 나는 crontab 파일을 직접 편집하는 것처럼 사용자가 www를 통해 사용자 정의 할 수있는 간단한 웹 프론트 엔드를 제공하려고합니다.

답장을 보내 주셔서 감사합니다.

+0

오. 나는 방금 같은 말을하는 또 다른 코멘트를 썼다. 게시하기 전에 모든 대답을 읽어야합니다 :) – conny

3

Sane 현대 리눅스 배포판은 crontab 항목을 별도의 파일로 저장할 수있는 /etc/cron.d/ 디렉토리가 있습니다. 올바르게 기억한다면 새로운 cronfile은 2 분 안에 기록됩니다.

4

아니요, 없습니다. VixieCron이라는 것을 알고 있으면 디렉토리의 타임 스탬프를 업데이트하십시오. 그렇지 않으면, 가짜로 만들 수 있습니다. (crontab에 대한 편집기를 가져와야 함)을 호출하기 전에 env 변수 EDITOR을 설정하십시오.

아이디어는 편집기를 변경하는 프로그램으로 설정하는 것입니다. crontab -e 편집기가 종료되고 파일을 다시 읽을 때까지 기다렸다가 cron에게 변경된 내용이 있음을 알립니다.

이전 버전의 cron이있는 경우에도 계속 다시 시작해야합니다. 그러나 나는 당신이 리눅스 나 맥 OS X를 돌리는 어떤 것이라도 고대 버전을 발견 할 수 있을지는 의심 스럽다.

+0

글쎄, 아니지만 여전히, 나는 대부분의 crontab 구현이 crontab (8) 명령을 통해 원자 적 업데이트를 지원한다고 생각한다. 이렇게하면 : crontab -l> CT', CT 편집,'crontab CT' 및 타임 스탬프 (timestamp) 등이나'crontab-'에 대해 걱정할 필요가 없으며 업데이트 된 탭을 STDIN에 제공해야합니다. – conny

0

다른 중요한 레버를 사용하면 어떨까요? 즉, 두 가지 옵션이 있습니다 :

crontab을 1 :/수행/i를 변경해야하는 특정 매개 변수 일부/아주/별/일 등

crontab을 2 :/어떻게/무엇을/요구/to be/done

# 2에서 작업은 수행해야 할 작업을 결정하고 수행하는 일을 담당합니다. 이 디자인을 통해 crontab이 세부적인 수준에서 작동하는 방식을 이해해야한다는 개념은 부적합합니다.

관련 문제