在哪里放置系统 cronjobs?

blu*_*ish 13 cron upgrade

如果我需要一个在系统级别运行cronjob(即不特定于某个用户),你如何建议我创建它?

  1. crontab -e以 root 身份运行
  2. 将其附加到 /etc/crontab
  3. 创建一个定义 cronjob 的文件 /etc/cron.d/
  4. 创建一个定义 cronjob 的文件/etc/cron.*ly/(但前提是这样的时间间隔符合我的需要)

我最担心的是:这些解决方案中的哪些可能会被系统更新覆盖

另外我想如果工作很长,我应该把它放在一个单独的脚本文件中,例如在/root/bin/. 你同意?

slm*_*slm 15

不要使用 crontab -e

我不会把它crontab -e作为根。这对于其他管理员来说通常不太明显,并且随着时间的推移可能会迷失方向。将它们放入/etc/crontab您可以准确指定您希望它们运行的​​时间,您也可以指定不同的用户。

替代地点

如果您不关心以不同用户身份运行脚本,和/或您只想每周、每天等运行脚本,那么一些发行版提供了可以放置脚本的目录,这些目录将在特定时间自动处理。

例如在基于 Redhat 的发行版下:

$ ls -dl /etc/cron*
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.d
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.daily
-rw-------. 1 root root    0 Nov 23 07:42 /etc/cron.deny
drwxr-xr-x. 2 root root 4096 Nov 29 11:03 /etc/cron.hourly
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.monthly
-rw-r--r--. 1 root root  457 Sep 26  2011 /etc/crontab
drwxr-xr-x. 2 root root 4096 Sep 26  2011 /etc/cron.weekly
Run Code Online (Sandbox Code Playgroud)

我经常将我想在特定时间运行的系统级 cron 放在/etc/cron.d而不是 中/etc/crontab,特别是如果它们是更复杂的脚本。

我更喜欢使用下面的目录,/etc/cron*因为它们是其他系统管理员知道要查看的更明显的地方,并且这里的文件可以通过安装包rpm和/或apt.

保护条目

我提到的任何目录都被指定用于放置不会被包管理器破坏的脚本。如果您担心保护 crontab 条目,那么我绝对不会将其放入/etc/crontab文件中,而是将其作为适当的脚本放入其中一个/etc/cron*目录中。