LinuxLinuxLinux 定时任务 crontab
chifycrontab 命令在 Linux 中是用做任务调度使用的,指的就是让系统定时的去调用某些指令或者某个脚本,完成我们想要做的一些定时执行的任务,有许多的应用场景,比如说数据库备份、周期性的日志分析,对于运维人员来说熟练掌握这个命令是十分重要的。
一、定时任务用法
crontab [参数]
1 2 3
| -e 编辑 crontab 定时任务 -l 查询 crontab 任务 -r 删除当前用户所有的 crontab 任务
|
快速使用例子
- 1.使用命令:
crontab -e - 2.输入想要定时执行的命令(
/1 * * * * date >> /home/guan/log.txt),Deepin 默认用 nano 编辑器打开,其他的发行版(CentOS)也有用 vim 打开的,如下图:

- 3.过段时间后执行
cat /home/guan/log.txt,结果如下:

二、参数说明
1 2 3 4 5
| 第一个 * : 一小时中的哪一分钟(0~59) 第二个 * : 一天中的哪一个小时(0~23) 第三个 * : 一个月中的哪一天(1~31) 第四个 * : 一年当中的那一个月(1~12) 第五个 * : 一周当中的星期几(0~7,0、7都代表星期日)
|
1 2 3 4
| * : 表示任何时间端都执行 , : 表示不连续的时间里执行,例如 (10 2,4 * * *) 代表每天的 2点10 ,4点10分执行。 - : 表示连续的时间范围内执行,例如 (0 2 * * 1-3) 代表每周一到周三的2点0分执行 */n : 表示隔多长时间执行一次,例如 (*/1 * * * *) 代表每隔一分钟执行
|
注意:(0 0 3,6 * 3) 表示每个月 3 号、6 号,每周 3 的 0 点 0 分都会执行。所以星期几和每月几号不要同时出现,定义的单位都是天,但是含义却不一样,容易混淆。
三、定时执行脚本任务
1 2
| #!/bin/bash date>>/home/guan/test.log
|
1 2 3
| crontab -e
*/1 * * * * /home/guan/ssh脚本/test.sh
|

四、Cron 表达式速查表
| 分钟 | 小时 | 日期 | 月份 | 星期 | 含义 |
|---|
| 0 | 2 | * | * | * | 每天 2:00 |
| 0 | 2 | 1 | * | * | 每月 1 号 2:00 |
| */5 | * | * | * | * | 每 5 分钟 |
| 0 | 8-17 | * | * | 1-5 | 工作日 8:00-17:00 每整点 |
| 30 | 0 | 1,15 | * | * | 每月 1 号和 15 号零点 |
| 0 | 9 | * | * | 1 | 每周一 9:00 |
| 0 0 | * | * | 6,7 | 周末零点 | |
五、安全注意事项
- 限制用户使用 crontab:通过
/etc/cron.allow 和 /etc/cron.deny 文件控制哪些用户可以使用定时任务。 - 避免执行危险命令:不要在定时任务中执行
rm -rf / 等高风险命令,建议使用绝对路径。 - 记录日志:定时任务的输出应重定向到日志文件,方便排查问题:
1
| */1 * * * * /home/guan/test.sh >> /home/guan/cron.log 2>&1
|
- 使用绝对路径:crontab 环境变量与交互式 Shell 不同,脚本和命令中应使用绝对路径。
- 最小权限原则:定时任务应以最低必要权限运行,避免使用 root 执行非必要任务。