目录
crontab简介
Linux 中的 crontab(cron table 的缩写)是一个用来设置可以被周期性执行的任务的工具。crontab 允许用户设置定时任务,这些任务可以是系统命令、用户自定义的脚本等。每个用户都可以拥有自己的 crontab 文件,存放在 /var/spool/cron/crontabs
目录下,文件名以用户名命名。
crontab语法
crontab 文件的每一行都代表一个任务
,其语法遵循以下格式:
字段可以是星号(*),表示该字段的每个值都有效
;也可以是具体的数值,表示仅在该值时才有效
;还可以是逗号分隔的列表,表示列表中的每个值都有效
;以及连字符表示的范围,例如 10-12 表示小时 10、11、12。
注意:crontab定时任务支持的最小单位是分钟级,即最小周期为每分钟执行一次,如果需要更小的粒度(如秒级),请使用其他方法实现。
自定义定时任务举例
1、每天中午12点执行命令:
0 12 * * * /usr/bin/find / -name "core" -type f -print | xargs /bin/rm -f
这条命令会在每天的 12:00 查找并删除所有的 core 文件。
2、每5分钟执行一次命令:
*/5 * * * * date +'%F %T'
这条命令表示每5分钟执行一次 date +‘%F %T’。
3、在每月的第一天和第十五天的00:00执行命令:
0 0 1,15 * * command
这条命令在每月的 1 号和 15 号的00:00执行 command。(此处的command根据实际需要替换成对应的命令即可)。
4、在周一到周五的上午 8 点到 10 点之间,每半小时执行一次命令:
0,30 8-10 * * 1-5 command
这条命令在每周的周一到周五,从上午 8:00 到 10:00,每隔半小时执行一次 command。
使用 crontab 命令
编辑当前用户的 crontab 文件:
在Linux的终端下输入:
crontab -e
会打开一个类似vim编辑器的界面,按下键盘I
键(插入),输入要执行的定时任务即可。
编辑完成后,按ESC
键退出编辑模式,输入:wq
保存退出。
上述定时任务每分钟向/home/date.log
中写入当前的时间,需要注意第一次写入时date.log必须存在,否则会写入失败。
查看date.log文件内容如下:
列出当前用户的 crontab 文件内容:
crontab -l
删除当前用户的 crontab 文件:
crontab -r
注意,如果不想永久删除也可以在定时任务前添加#
注释掉该任务即可:
添加注释的定时任务会被忽略。
保存并退出 crontab 编辑器:如果你使用的是 nano编辑器,可以按 Ctrl+O 保存,然后 Ctrl+X 退出;如果是 vim,则 :wq 保存并退出。
注意:编辑 crontab 文件时,请确保命令路径正确,因为 cron 在执行时不会读取用户的 shell 环境变量(如 $PATH)。因此,最好使用命令的绝对路径。