如何有效管理我的 crontab 以避免多個使用者多次更新所導致的問題?

如何有效管理我的 crontab 以避免多個使用者多次更新所導致的問題?

我有一個 crontab,其中包含許多更新它的使用者。問題是,正因為如此,要知道誰對 cronjob 做了什麼修改並不容易。

我正在考慮創建一個腳本來使用diff先前保存的版本執行 crontab 操作,以便至少能夠看到已更改的內容,但我認為也許對此有一個標準解決方案。管理 crontab 的最佳方法是什麼?

答案1

顛覆

我將 crontab 的內容置於顛覆控制之下,並且僅透過 授予該使用者存取權限sudo。具體來說,我只允許人們透過該命令存取 a 命令,sudo該命令將從 subversion 中獲取 head,並將其安裝為該特定用戶的最新 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」想要克服的問題...?

相關內容