两个用户如何设置运行相同的 cron 文件?

两个用户如何设置运行相同的 cron 文件?

在我们的环境中,我们有两个 DBA 来运行 cron_jobs.txt 文件中定义的一些 cron 作业。我们经常需要更改该 cron_jobs.txt 文件中的时间和命令并重新加载它。

问题是,如果 DBA_1 编辑并重新加载该文件 ($ crontab cron_jobs.txt),则该文件将加载到他的用户帐户下。现在,DBA_2 编辑相同的 cron_jobs.txt 文件并重新加载。新的作业集将在 DBA_2 用户帐户下运行。因此,基本上相同的作业会运行两次。

例如,DBA_1 将作业设置为每天下午 3 点运行。几天后,DBA_2 将其更改为下午 2 点并重新加载。现在我们在下午 2 点和下午 3 点运行相同的作业。

有没有办法合并作业?比如无论谁加载 cron_job.txt 文件,都只应运行一组作业?顺便说一句(DBA_1 具有 UNIX 管理员权限,DBA_2 没有)。我们使用的是 Sun Os 5.10。如能提供解决方案,我们将不胜感激。

谢谢。

DBA_2

答案1

为此目的设置一个单独的帐户,并让 cron 作业仅在该帐户下运行。

这是一种最佳做法,除了能解决问题之外,还能带来许多好处:

  • 不用担心 DBA 是否被公交车撞到,或者其他
  • 真实用户账户环境不会影响你的生产 cron 任务
  • 与 sudo 结合使用,可以提供良好的日志记录/问责制

在我之前的公司,我禁用了所有真实用户帐户的 cron 和 at。

答案2

使用角色帐户,而不是将内容绑定到常规用户帐户。然后允许两个用户运行此命令。

sudo crontab -u dba_cron_user -e

答案3

实现此目的的一种方法是创建一个两个用户都可以写入的信号文件。让 cron 作业检查此文件是否存在以及文件的日期 - 如果是今天的日期,则作业已经运行 - 因此无需运行 - 第二次运行文件的尝试将退出。但这种方法的问题在于较早的运行总是会获胜。

答案4

您可以创建从第一个用户的 crontab 文件 (/var/spool/cron/DBA_1) 到第二个用户的 crontab 文件 (/var/spool/cron/DBA_2) 的硬链接或软链接。此方法的缺点是两个用户共享同一个 crontab,并且都没有单独的文件。

上面提到的位置对于 RHEL/CentOS 来说是正确的;它们在其他发行版中可能会有所不同。

相关内容