一.简单说明
我们在实际使用Centos系统的过程中,可能会涉及一些定时任务的操作,比如定时清理环境上的垃圾文件。这里我遇到的一个问题就是,CI环境上构建的Docker IMAGE的清理,这里我采用了crontab来配置实现。
二.crontab介绍
crond是定时任务的一个守护进程,crontab是一个命令,常见于Unix和类Unix的操作系统,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取执行。可以通过crontab命令添加或编辑需要执行的定时任务。
三.crontab操作
crontab -u 设定某个用户的cron服务
crontab -l 列出某个用户cron服务的详细内容
crontab -r 删除某个用户的cron服务
crontab -e 编辑某个用户的cron服务
crontab -i 打印提示,输入yes等确认信息
四.基本格式
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
定时任务的每段为:分,时,日,月,周,用户,命令
具体说明:
第1列:表示分钟1~59 每分钟用*或者 */1表示
第2列:表示小时1~23(0表示0点)
第3列:表示日期1~31
第4列:表示月份1~12
第5列:表示星期0~6(0表示星期天)
第6列:表示要运行的命令
除了数字还有几个特殊的符号:"*"、"/"和"-"、","
- "*"代表所有的取值范围内的数字
- "/"代表每的意思,"/5"表示每5个单位
- "-"代表从某个数字到某个数字
- ","分开几个离散的数字
注意:定时执行的任务脚本或者命令:
- 如果存在文件,需要写绝对路径
- 最好增加重定向日志
五.举例说明
- 创建cron脚本文件,命名为cronjob.cron
[root@k8s001 ~]# touch cronjob.cron
[root@k8s001 ~]# vi cronjob.cron
*/5 * * * * echo "cronjob test" 表示,每隔15分钟,执行一次打印命令
- 添加定时任务
[root@k8s001 ~]# crontab cronjob.cron
- 查看定时任务是否成功
# 通过crontab查看
[root@k8s001 ~]# crontab -l
# 也可以通过查看/var/spool/crob目录下是否生成对应的cron脚本
[root@k8s001 ~]# ls /var/spool/cron