计划任务crontab
什么叫计划任务
计划任务,字面意思理解就是在约定好的时间执行已经计划好的工作。在Linux中我们经常使用cron服务来完成这项工作。比如我们可以使用cron来做一个每天晚上12点备份一个日志文件,这就是个计划任务。
计划任务的好处
像一些做运维工作的,平时会有很多重复工作,如定点备份,定期重启服务,上线服务,定期检测等等,而这些任务有的需要在半夜进行,我们如果再等到半夜去操作会很累,很繁琐,所以我们这个时候就要用到计划任务了,只要我们把计划任务写好,我们就可以喝喝茶,干点其他事情了,也就不需要熬夜加班了。
计划任务的类型
1.系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2.个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。
crontab其实是一个命令,用来读取和修改名为crontab的文件。这个crontab文件包含了你要定时执行的程序列表,也包含了执行的时刻。
实际上,有两个命令,一个叫crontab,一个叫cron。crontab用于修改crontab文件,cron用于实际执行定时的程序。
有三个常用参数:
-e:修改crontab文件。
-l:显示crontab文件。
-r:删除crontab文件
定义一个任务计划如下:
30 5 * * * root touch /root/1.txt
在这里我就跟大家详细介绍下每一段的定义:
第一段应该定义的是:分钟,表示每个小时的第几分钟来执行。范围是从0-59
第二段应该定义的是:小时,表示从第几个小时来执行,范围是从0-23
第三段应该定义的是:日期,表示从每个月的第几天执行,范围从1-31
第四段应该定义的是:月,表示每年的第几个月来执行,范围从1-12
第五段应该定义的是:周,表示每周的第几天执行,范围从0-6,其中 0表示星期日。
每六段应该定义的是:用户名,也就是执行程序要通过哪个用户来执行,这个一般可以省略;
第七段应该定义的是:执行的命令和参数。
我们需要记住几个特殊符号的含义:
"*"代表取值范围内的数字,
"/"代表"每",
"-"代表从某个数字到某个数字,
","分开几个离散的数字
案例1:
就是指定每小时的第5分钟执行一次ls命令
5 * * * * ls
案例2:
指定每两个小时以user1身份执行一次ls
0 */2 * * * user1 ls
案例3:
每天的10:30,12:30,14:30创建1.txt
30 10,12,14 * * 1-5 touch 1.txt
案例4:
在每周一至周五的10:30开始,每隔2小时重复一次就是
30 10-23/2 * * 1-5 touch 1.txt
案例5:
按照秒来做定时任务,每6秒写入一次文件
* * * * * echo "hello" >> /root/1.txt * * * * * sleep 6; echo "hello" >> /root/1.txt * * * * * sleep 12; echo "hello" >> /root/1.txt * * * * * sleep 18; echo "hello" >> /root/1.txt * * * * * sleep 24; echo "hello" >> /root/1.txt * * * * * sleep 30; echo "hello" >> /root/1.txt * * * * * sleep 36; echo "hello" >> /root/1.txt * * * * * sleep 42; echo "hello" >> /root/1.txt * * * * * sleep 48; echo "hello" >> /root/1.txt * * * * * sleep 54; echo "hello" >> /root/1.txt * * * * * sleep 60; echo "hello" >> /root/1.txt