无论是简单的每分钟日志记录、每日凌晨备份,还是每周
报表生成、每月
系统更新,
crontab
都能轻松应对。用户可通过
crontab -e
编辑任务列表,
crontab -l
查看当前任务,配合输出重定向、环境变量配置等技巧,实现任务的精细化管理。其跨发行版兼容性和低资源占用特性,使其成为
Linux 系统中定时任务的首选工具,适合从新手到资深运维的各类用户使用。
- crontab:用户级的定时任务配置文件,每个用户都有独立的 crontab。
- cron 服务:系统后台守护进程,负责读取并执行 crontab 中的任务。
- 配置文件位置:
- 用户级:
/var/spool/cron/<username>
(由crontab -e
生成)
- 系统级:
/etc/crontab
及 /etc/cron.d/
目录下的文件
* * * * * command
│ │ │ │ │
│ │ │ │ └─ 星期 (0-7, 0和7都代表周日)
│ │ │ └─── 月份 (1-12)
│ │ └───── 日期 (1-31)
│ └─────── 小时 (0-23)
└───────── 分钟 (0-59)
示例:每天凌晨 2 点执行备份脚本
0 2 * * * /path/to/backup.sh
表达式 |
含义 |
示例(执行date 命令) |
* * * * * |
每分钟执行一次 |
* * * * * date >> /tmp/time.log |
0 0 * * * |
每天午夜 12 点执行 |
0 0 * * * /scripts/daily_clean.sh |
0 */2 * * * |
每两小时执行一次 |
0 */2 * * * /scripts/check_status.sh |
0 8 * * 1 |
每周一上午 8 点执行 |
0 8 * * 1 /scripts/weekly_report.sh |
0 0 1 * * |
每月 1 号凌晨执行 |
0 0 1 * * /scripts/monthly_backup.sh |
*/15 * * * * |
每 15 分钟执行一次 |
*/15 * * * * /scripts/monitor.sh |
-
编辑当前用户的 crontab
- 首次运行会让你选择编辑器(如 nano、vim)。
-
查看当前用户的 crontab
-
删除当前用户的所有定时任务
-
查看 cron 服务状态
-
使用环境变量
在 crontab 文件顶部设置变量(如PATH
):
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
0 3 * * * /scripts/cleanup.sh
-
重定向输出
将命令输出保存到日志文件:
0 2 * * * /scripts/backup.sh >> /var/log/backup.log 2>&1
-
多命令组合
使用分号或&&
连接多个命令:
0 6 * * * cd /data && tar -czf backup.tgz files/
-
注释与空行
使用#
添加注释,提高可读性:
0 3 * * * apt-get update && apt-get upgrade -y
- 路径问题:crontab 执行环境的
PATH
变量可能与用户登录环境不同,建议使用绝对路径。
- 权限问题:确保执行的脚本或命令有可执行权限(
chmod +x /path/to/script.sh
)。
- 日志查看:系统日志(如
/var/log/syslog
或/var/log/cron
)可帮助排查任务执行失败的原因。
- 避免冲突:不要同时运行多个相同任务,可能导致资源竞争。
- systemd.timer:现代 Linux 系统(如 Ubuntu 16.04+、CentOS 7+)推荐使用,功能更强大,支持精确时间触发和依赖管理。
- anacron:适合非 7×24 小时运行的系统(如笔记本),确保任务即使在系统关机期间也能补执行。
根据需求选择合适的工具,简单周期性任务首选crontab
,复杂场景可考虑systemd.timer
。