前言:
在linux日常运维过程中我们常常需要在指定时间段自动停止或启动某个服务我们不可能人为的手动去执行,这时候我们就可以给对应的任务设置一个定时。后面我就可以将周期性的、规则的工作交给定时任务去完成。
**一次性任务:**顾名思义就是该任务只执行一次,一般用于临时性的工作需求。
**长期性计划任务:**就如何定时任务,就跟我们在自动化测试的过程中每天设置定时巡检任务一样。
设置一次性的任务:
我们设置一下固定时间停止mysql服务。
先看下mysql的运行状态。
设置一次性定时任务停止掉mysql服务。
可以看到任务已经停止啦!
如何查看还未执行或者长期性的定时任务:
la -l
假如定时任务设置多了,如何删除多余的定时任务。根据定时任务前面的编号,我们可以看到上面定时任务的编号为2,我们可以根据2删除对应的定时任务。
如何设置长期计划任务:
我们可以使用crond服务去完成这个操作,linux系统中一般默认就存在该服务,我们可以输入 which crontab来验证该服务是否存在。
但是一般默认都没有启动的状态这里我们只需要将这个服务启动即可。
创建、编辑计划任务的命令为”crontab -e“,查看当前计划任务命令为”crontab -l“,删除某条计划任务的命令为”crontab -r“。
在设置定时任务前我们要先了解时间参数设置的格式,”分、时、日、月、星期“,如果有些时间不需要设置则使用 ”*“ 替代。
字段 | 说明 |
---|---|
分 | 取值为0-59的整数 |
时 | 取值为0-23的任意整数 |
日 | 取值为1-31的任意整数 |
月 | 取值为1-12的任意整数 |
星期 | 取值为0-7的任意整数,其中0、7均为星期日 |
这里需要说明的是,我们可以用逗号来表明多个时间段,例如 2,3,4 二月三月四月。也可以用-号表示一段时间周期,例如12-15表示12号到15号执行,。以及用除号(/)表示执行任务的间隔时间例如 /2 每两分钟执行一次。
下面我们举个例子写一个如何设置长期的定时任务吧。
现在有个需求,每个月1号15号凌晨5点清除对应目录的所有日志文件。
这里需要特别特别注意的是设置定时任务时所有的命令都要用绝对路径来写,在使用前可以先用whereis来查一下。
最后需要特别注意的是,我们在配置定时任务时也可以像写shell脚本一样加上#注释,方便我们日后可以知道具体是干什么用的,还有就是配置定时任务时分钟不能用代替一定要写上具体的数字,星期和日不能同时使用,这样会冲突的,这个我相信大家都能理解。