여러 사용자의 여러 업데이트로 인한 문제를 방지하기 위해 crontab을 효과적으로 관리하려면 어떻게 해야 합니까?

여러 사용자의 여러 업데이트로 인한 문제를 방지하기 위해 crontab을 효과적으로 관리하려면 어떻게 해야 합니까?

많은 사용자가 업데이트하는 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 및 기타 해결 방법을 사용하는 것이 더 바람직할 수 있습니다.

관련 정보