如果没有 crontab,/etc/cron.* 是否运行?

如果没有 crontab,/etc/cron.* 是否运行?

我已经设置了一个 Ubuntu 服务器并删除了镜像后恰好存在的 Ubuntu 用户。

root 或我的用户没有 crontab。这对/etc/crontab.*跑步没有任何意义吗?我是否必须从根 crontab 调用这些 cron 作业?

答案1

这记录在cron(8)联机帮助页(当您阅读本文时,请考虑任何特定于 Debian 的内容也适用于 Ubuntu)。尤其:

cron在其假脱机区域 ( /var/spool/cron/crontabs) 中搜索 crontab 文件(以 中的帐户命名/etc/passwd);找到的 crontab 被加载到内存中。请注意,不应直接访问此目录中的 crontab - 应使用 crontab 命令来访问和更新它们。

cron还读取/etc/crontab,其格式略有不同(请参阅crontab(5))。在 Debian 中, 的内容/etc/crontab被预定义为在/etc/cron.hourly/etc/cron.daily/etc/cron.weekly下运行程序/etc/cron.monthly。此配置特定于 Debian,请参阅下面的注释特定于 Debian以下。

此外,在 Debian 中,cron读取目录中的文件/etc/cron.d。以与文件相同的方式cron对待文件(它们遵循该文件的特殊格式,即它们包含用户字段)。但是,它们独立于:例如,它们不从中继承环境变量设置。/etc/cron.d/etc/crontab/etc/crontab

默认/etc/crontab如下

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

(带有额外的支持anacron)。

因此,即使没有用户拥有特定于用户的 crontab,在 Debian 衍生产品上仍然有许多地方可以指定 cron 作业。如上所述,它们可以通过多种方式处理;中的任何内容/etc/cron.d都将直接由 解释,但、和的cron内容由 中的相应指令运行,或者如果已安装(对于每日、每周和每月作业)。/etc/cron.monthlyweeklydailyhourly/etc/crontabanacron

反映了 cron 作业的各种角色。/etc/cron.d允许软件包使用 cron 说明符删除 cron 作业并运行它们。/etc/cron.monthly等允许软件包和系统管理员删除脚本或二进制文件没有cron 说明符并让它们定期运行,无需精确控制它们运行的​​确切时刻。每用户 crontab 允许用户定义自己的作业,并通过显式验证(使用命令crontab)确保格式在系统尝试使用它们之前有效。

相关内容