
cron이 정적 파일을 읽는 대신 쉘 스크립트의 출력에서 지침을 받도록 할 수 있습니까?
저는 여러 컴퓨터에 걸쳐 crontab을 관리하려고 하는데 각 컴퓨터마다 별도의 crontab 파일을 유지하는 것이 번거로운 일입니다. 대신 주어진 시스템이 해당 작업에 할당되었는지 여부에 따라 각 작업에 대한 crontab 줄을 인쇄하는 쉘 스크립트를 cron에서 실행하고 싶습니다. 내가 이걸 할 수 있을까?
추신-Puppet/Chef/etc를 제안하는 사람들이 있는 것을 보았습니다. 하지만 이 한 가지 문제만 처리하기에는 너무 과잉이라고 생각합니다.
답변1
대부분의 배포판에서 이를 수행하는 가장 쉬운 방법은 Puppet/Chef 및 /etc/cron.d 디렉토리와 같은 자동화된 배포 도구를 사용하는 것이라고 생각합니다. 일반적인 형식이 아닌 다음 형식을 사용하는 경우를 제외하고 해당 디렉터리에 crontab을 배치할 수 있습니다.
* * * * * <user> <command>
cron을 실행할 사용자는 어디에 있습니까?
Puppet이 과도하다고 생각하는 것 같지만(그렇지 않습니다), 디렉토리 부분은 다른 솔루션에도 적용됩니다.
답변2
예, 물론 그렇게 할 수 있습니다. crontab 출력을 생성하는 데 필요한 스크립트를 설정하고 이를 대상 서버로 scp하세요.
그런 다음 정적 크론 작업은 편리한 위치에서 실행하기 위해 해당 크론탭을 구체적으로 읽을 수 있습니다.
답변3
이것은 꼭두각시와 친구들을 위한 용도입니다.
crontab
배포판의 패키지 관리에 의한 설정 방법이 마음에 들지 않으면 꼭두각시 에이전트를 실행하는 것이 유일한 항목 일 수 있습니다.
외부 스크립트는 꼭두각시 마스터에 있습니다. 한 곳에서. 모든 기계에 적용됩니다.
외부 스크립트 사용을 고려하는 것이 문제라면 Puppet을 추천합니다. 요리사는 확실히 비슷한 일을 할 수 있습니다.
~/.ssh/authorized_keys
나는 비슷한 "작은" 문제인 여러 컴퓨터를 관리하기 위해 꼭두각시로 시작했습니다 .
답변4
널리 사용되는 트릭은 전체 crontab을 업데이트하는 crontab 항목을 만드는 것입니다. 쉘 스크립트가 잘못된 데이터를 crontab
.
그러나 관리하기 더 쉬운 다른 접근 방식을 제안합니다. 즉, 스크립트를 자주 실행하는 정적 crontab 항목을 갖는 것입니다. 스크립트가 언제 무언가를 실행할 시간인지 파악하는 모든 어려운 작업을 수행하도록 만듭니다. 이렇게 하면 모든 컴퓨터에서 실행될 수 있는 모든 것을 스크립트에 알릴 필요 없이 crontab을 일반 crontab으로 계속 사용할 수 있습니다.