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

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

업데이트하는 많은 사용자가 포함된 crontab이 있습니다. 문제는 이 때문에 누가 크론잡을 어떻게 변경했는지 알기가 쉽지 않다는 점이다.

원래는 이전에 저장한 crontab 버전을 실행하는 스크립트를 만들어 diff최소한 변경된 내용을 확인하고 싶었지만 표준 솔루션이 있을 수도 있다고 생각했습니다. crontab을 관리하는 가장 좋은 방법은 무엇입니까?

답변1

파괴

나는 crontab의 내용을 전복 제어 하에 두고 해당 사용자에게 액세스 권한을 부여할 것입니다 sudo. 특히 저는 사람들이 sudoSubversion에서 머리를 잡고 해당 특정 사용자에 대한 최신 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과 다른 해결 방법을 사용하는 것이 더 나을 수도 있습니다...?

관련 정보