
更新する多くのユーザーを含むcrontabがあります。問題は、このため誰がクローンジョブをどのように変更したのか分かりにくいという点だ。
もともと私は以前に保存したバージョンのcrontabを実行するスクリプトを作成し、少なくとも変更を確認しdiff
たかったのですが、標準的な解決策があるかもしれません。 crontabを管理する最良の方法は何ですか?
答え1
破壊
私はcrontabの内容をアワビ制御下に置き、そのユーザーにアクセス権を与えますsudo
。特に、私はsudo
Subversionで頭をつかみ、その特定のユーザーの最新の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とは異なる回避策を使用する方が良いかもしれません...?