Linux定时任务Crontab

作者: jan29 | 来源:发表于2021-07-26 02:01 被阅读0次

    一、定时任务

    1、在讲什么是Linux当中的定时任务,我们先说一下什么是定时任务?

    在平时生活中,大家都会遇到一些定时重复性任务。比如,你每天8点钟上课,你可以每天早上定一个7点30的闹钟;你的公司应该每月15号发工资,但一般不会准时发给你;每年的几号是你的结婚纪念日,你可以拿个小本本记下来。等等这些我们会定时定点的做的一些事情就是定时任务

    2、那Linux当中为什么要用定时任务?

    在Linux当中,为了使管理员方便去处理某些重复性的事情,降低运维压力,节约时间成本。比如,每周二凌晨4点服务器重启维护;每天凌晨2点执行数据库的备份;每月删除上月的过期日志。等等这些任务,我们不可能守着机器执行,机器不累,人扛不住啊,所以我们就要借用Linux定时任务来帮助我们去执行这些重复性的工作

    二、定时任务的使用

    先来举个简单的例子

    [root@master ~]# crontab -e
    * * * * * echo "you are a successful man" >> /tmp/test
    

    我们使用crontab命令进入定时任务界面(类似于vi/vim编辑器,在这里你就可以编写你的定时任务了)
    上边这个代表我要每分钟在/tmp/test文件中写入you are a successful man

    那大家就会问了 怎么代表的?
    是 * * * * * * 代表的。
    那 * * * * * * 分别代表什么呢?
    接下来我们就看看 * * * * * 代表什么意义

    三、各字段表示含义

    字段 含义 范围
    第一个“*” 一小时当中的第几分钟 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
    

    上边的这四个定时任务分别代表
    每周二凌晨四点重启计算机
    每天凌晨两点备份数据库
    每月一号删除test备份日志
    每小时的第五分钟将aaa写入文件/tmp/test中

    但是你可能会问5 * * * *这一个不应该代表每五分钟写入文件吗?
    不是的,那我们接下来去看一下它的更高级用法。

    四、定时任务高级用法

    特殊字符 代表意义
    * 代表任何时刻都接受的意思。举例来说,范例一内那个日、月、周都是*,就代表着不论何月、何日的礼拜几的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,意思相同

    所以说 如果想要表示每五分钟写入文件应该是这样的
    */5 * * * * echo aaa > /tmp/test

    紧接着我们举几个例子:

    [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
    

    上边的这六个定时任务分别代表
    每天凌晨1点45重启计算机
    每周2的17点备份数据库
    每月7号和15号凌晨5点删除test备份日志
    每周一到周六凌晨4点40将aaa写入文件/tmp/test中
    每天凌晨四点,每隔十分钟执行脚本
    每月1号和15号,每周一都重新生成yum缓存

    五、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
    

    相关文章

      网友评论

        本文标题:Linux定时任务Crontab

        本文链接:https://www.haomeiwen.com/subject/ibdwmltx.html