Crontab을 프로그래밍 방식으로 편집하고 데몬을 새로 고치도록 강제하십시오

StackOverflow https://stackoverflow.com/questions/1673143

문제

우수한 Cronedit Gem을 사용하여 Ruby의 Crontab의 웹 프론트 엔드를 작성하려고합니다. Dillon Cron의 Crontab 소스 코드를 살펴보고 다음 스윕 중에 데몬이 CRON 목록을 새로 고칠 수 있도록 특정 파일을 업데이트하는 것을 발견했습니다.

Vixiecron의 Man Crontab에서는 다음과 같습니다.

또한 CRON은 각 분마다 스풀 디렉토리의 MODTIME (또는 /etc /crontab의 modtime)이 변경되었는지 확인하고 CRON이 모든 CrontAB의 모드 타임을 검사하고 변경된 것을 다시로드합니다. 따라서 Crontab 파일이 수정 될 때마다 CRON을 다시 시작할 필요가 없습니다. Crontab (1) 명령은 Crontab을 변경할 때마다 스풀 디렉토리의 모드 타임을 업데이트합니다.

CRON 파일을 수동으로 편집 한 후 데몬이 실패하지 않고 새로 고침 할 수있는 플랫폼 (Ubuntu, Red Hat, Archlinux, Mac OS X) 독립적 인 방법이 있습니까?

도움이 되었습니까?

해결책 3

Gnibbler와 Aaron에게 대단히 감사합니다. 방금 루비를위한 '언제라도'와 '크로네디트'보석 모두에 대한 소스 코드를 살펴 보았습니다. 둘 다 기존 CRON 파일을 업데이트 된 CRON 항목으로 대체하는 'Crontab-'을 수행합니다. 즉, 원래의 질문과는 반대로,이 라이브러리는 표준 Crontab 도구를 사용하여 데몬을 새로 고치는 데 필요한 세부 사항을 수행 할 수 있습니다.

나는 최고의 플랫폼 독립적이며 Cron (Dillon, Vixie, Mcron 등)을 고상한 방법은 데몬을 새로 고치는 방법은 항상 관련 Crontab 유틸리티를 사용하는 것입니다. 프로그래밍 방식으로 편집하더라도 사용자 프로그램은 새로운 CRON 파일을 Crontab 유틸리티로 전달하여 해당 특정 플랫폼/CRON에 필요한 모든 것을 수행해야합니다.

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

답변 해 주셔서 감사합니다!

다른 팁

아니요, 없습니다. Vixiecron이라는 것을 알고 있다면 디렉토리의 타임 스탬프를 업데이트하십시오. 그렇지 않으면, 당신은 그것을 가짜로 만들 수 있습니다 : ENV 변수를 설정하십시오. EDITOR 당신이 호출하기 전에 crontab -e (Crontab의 편집자를 키워야합니다).

아이디어는 편집자를 일부 프로그램으로 설정하는 것입니다. crontab -e 편집자가 파일을 종료하고 다시 읽고 Cron에게 무언가가 바뀌 었다고 말할 때까지 기다릴 것입니다.

그러나 이전 버전의 CRON이 있다면 여전히 다시 시작해야합니다. 그러나 나는 당신이 Linux 또는 Mac OS X를 실행하는 것에 대해 그러한 고대 버전을 찾을 수 있다고 의심합니다.

Sane Modern Linux 배포판이 있습니다 /etc/cron.d/ Crontab 항목을 별도의 파일로 넣을 수있는 디렉토리. 내가 올바르게 기억한다면 새로운 cronfile이 쓰여진 후 2 분 이내에 읽습니다.

이것이 중요하다면 다른 레버를 사용하지 않는 이유는 무엇입니까? 다시 말해, 두 가지 옵션이 있습니다.

Crontab 1 :/do/some/very/species/변경 해야하는 특정 매개 변수가있는 것 등.

Crontab 2 :/do/what/reness/to/be/done

#2에서, 작업은 런타임에해야 할 일을 결정하고 수행해야 할 책임이 있습니다. 이 디자인을 통해 Crontab이 어떻게 일부 상세한 수준에서 작동하는지 이해해야한다는 개념은 관련이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top