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