如何有效管理我的 crontab 以避免多个用户多次更新导致的问题?

如何有效管理我的 crontab 以避免多个用户多次更新导致的问题?

我有一个 crontab,其中包含许多更新它的用户。问题是,正因为如此,要知道谁对 cronjob 做了什么修改并不容易。

我原本想创建一个脚本来执行diffcrontab 的先前保存的版本,以便至少能够看到已更改的内容,但我认为也许有一个标准解决方案。管理 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”想要克服的问题......?

相关内容