많은 사용자가 업데이트하는 crontab이 있습니다. 문제는 이 때문에 누가 크론잡을 어떤 수정을 했는지 알기가 쉽지 않다는 점이다.
diff
나는 적어도 변경된 내용을 볼 수 있도록 이전에 저장된 버전으로 crontab을 수행하는 스크립트를 만들려고 생각했지만 아마도 이에 대한 표준 솔루션이 있을 것이라고 생각했습니다. 내 crontab을 관리하는 가장 좋은 방법은 무엇입니까?
답변1
파괴
나는 crontab의 내용을 전복 제어하에 두고 sudo
. 특히 사람들이 Subversion에서 머리를 가져오는 명령에 액세스하도록 허용하고 sudo
이 특정 사용자를 위한 최신 crontab으로 설치합니다. 이를 통해 다음이 제공됩니다.
- 누가 무엇을 했는지에 대한 감사 추적
- 문제가 발생할 경우 이전 crontab 파일로 롤백하는 기능
- 운영자가 이 특별 계정에 대해 너무 많은 권한을 갖지 않도록 보호하세요.
너무 복잡해 보일 수도 있지만, 제가 설명한 내용을 작은 덩어리로 나누어 보면 그다지 복잡한 것은 없습니다.
멀티크론
또 다른 접근 방식은 다음과 같은 도구/스크립트를 사용하는 것입니다.멀티크론. 이 도구를 사용하면 crontab 항목 외부의 crontab 데이터를 관리할 수 있으므로 누가/언제 이러한 변경 사항에 액세스할 수 있는지 더 잘 제어할 수 있습니다.
Subversion을 사용한 예
SVN 저장소를 설정한다고 가정하면 sudo
사용자가 다음과 같은 작업을 수행할 수 있는 항목을 만들 수 있습니다.
$ sudo deploy_app_cron.bash
이 스크립트의 내부는 무엇보다도 다음과 같은 작업을 수행할 수 있습니다.
svn cat file:///home/saml/svnrepo/app_cron_data.txt | crontab -u saml -
파일 내용 app_cron_data.txt
:
$ svn cat file:///home/saml/svnrepo/app_cron_data.txt
*/5 * * * * /path/to/job -with args"
예제 사용 루프
따라서 userA는 crontab 항목을 업데이트하려고 합니다. 시작하려면 다음을 수행합니다.
$ cd $HOME/somedir
$ svn co file:///home/saml/svnrepo/ mywksp
A mywksp/app_cron_data.txt
$ cd mywksp
이제 그들은 crontab 파일을 일부 편집하고 app_cron_data.txt
완료되면 저장소에 커밋합니다.
$ svn commit -m "some msg.." app_cron_data.txt
이러한 변경 사항을 배포하려면 다음 명령을 실행합니다 sudo
.
$ sudo deploy_app_cron.bash
참고자료
답변2
올바른 해결책은 cron을 적절하게 사용하고 각 사용자가 자신만의 사용자별 crontab을 갖도록 하는 것입니다. 이런 식으로 crontab을 설정하는 이유에 대해 생략된 이유가 있습니까? 이 "통합 crontab"이 극복하려는 모든 것에 대해 사용자별 crontab 및 기타 해결 방법을 사용하는 것이 더 바람직할 수 있습니다.