补充说明
cron 是传统的定时任务守护进程,启动后每分钟检查一次 /var/spool/cron、/etc/cron.d、/etc/crontab 等位置的计划表,到点执行对应用户的命令。用户通过 crontab -e 编辑自己的任务,系统级任务放在 /etc/crontab 或 /etc/cron.d/。
不同发行版实现不同:Debian 使用 cron 包(二进制 cron,支持 -f 前台运行),RHEL 使用 cronie(二进制 crond,支持 -n 前台运行)。两者读取的计划表格式一致,但服务名分别为 cron 和 crond。
注意:cron 环境变量极少(PATH 通常仅 /usr/bin:/bin),脚本里应写绝对路径;任务输出会通过邮件发给用户,建议重定向到日志文件。修改计划表要用 crontab 命令,不要直接编辑 spool 文件,否则可能不生效。
cron 不会补跑错过的任务,机器关机期间的计划会被跳过。需要秒级精度或复杂依赖时,应考虑 systemd timer 或其他调度器。
语法
cron [-f] [-L 日志级别] # Debian
crond [-n] [-x 调试标志] # RHEL/cronie
选项
-f:前台运行(Debian),便于调试或由其他进程托管;-L 级别:设置日志级别(Debian);-n:前台运行(cronie);-x 标志:输出调试信息(cronie)。
实例
# 查看服务状态
systemctl status cron # Debian/Ubuntu
systemctl status crond # RHEL/CentOS
# 前台启动并观察日志
sudo cron -f -L 15
# 编辑当前用户的计划任务
crontab -e
# 查看 cron 相关日志
journalctl -u cron -n 50