一、定时任务
1、在讲什么是Linux当中的定时任务,我们先说一下什么是定时任务?
在平时生活中,大家都会遇到一些定时重复性任务。比如,你每天8点钟上课,你可以每天早上定一个7点30的闹钟;你的公司应该每月15号发工资,但一般不会准时发给你;每年的几号是你的结婚纪念日,你可以拿个小本本记下来。等等这些我们会定时定点的做的一些事情就是定时任务
2、那Linux当中为什么要用定时任务?
在Linux当中,为了使管理员方便去处理某些重复性的事情,降低运维压力,节约时间成本。比如,每周二凌晨4点服务器重启维护;每天凌晨2点执行数据库的备份;每月删除上月的过期日志。等等这些任务,我们不可能守着机器执行,机器不累,人扛不住啊,所以我们就要借用Linux定时任务来帮助我们去执行这些重复性的工作
二、定时任务的使用
先来举个简单的例子
[root@master ~]# crontab -e
* * * * * echo "you are a successful man" >> /tmp/test
三、各字段表示含义
字段 | 含义 | 范围 |
---|---|---|
第一个“*” | 一小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
紧接着我们举几个例子:
[root@master ~]# crontab -e
0 4 * * 2 shutdown -r now
0 2 * * * cp -rf /var/lib/mysql/mysql/* /tmp/mysql
0 0 1 * * rm -rf /tmp/test.log
5 * * * * echo aaa > /tmp/test
四、定时任务高级用法
特殊字符 | 代表意义 |
---|---|
* | 代表任何时刻都接受的意思。举例来说,范例一内那个日、月、周都是*,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思。 |
, | 代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是:0 3,6 * * * command时间还是有五列,不过第二列是 3,6 ,代表3与6都适用 |
- | 代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作:20 8-12 * * * command 仔细看到第二列变成8-12.代表 8,9,10,11,12 都适用的意思 |
/n | 那个n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则:/5 * * * * command 用与/5来搭配,也可以写成0-59/5,意思相同 |
紧接着我们举几个例子:
[root@master ~]# crontab -e
45 1 * * * shutdown -r now
0 17 * * 7 cp -rf /var/lib/mysql/mysql/* /tmp/mysql
0 5 7,15 * * rm -rf /tmp/test.log
40 4 * * 1-6 echo aaa > /tmp/test
*/10 4 * * * bash /root/box.sh
0 0 1,15 * 1 yum makecache
五、crontab其它命令
[root@master ~]# crontab -e #编辑crontab 的工作内容
[root@master ~]# crontab -l #查阅crontab的工作内容
0 4 * * 2 shutdown -r now
0 2 * * * cp -rf /var/lib/mysql/mysql/* /tmp/mysql
0 0 1 * * rm -rf /tmp/test.log
5 * * * * echo aaa > /tmp/test
[root@master ~]# crontab -r #删除所有的crontab的工作内容,若仅要删除一项,请用-e