美文网首页
定时计划任务(RHEL7)

定时计划任务(RHEL7)

作者: 半个王国 | 来源:发表于2018-07-08 21:28 被阅读46次

    一次性计划任务

    今晚23:30分自动重启网站服务

    • 方法1
    # at 23:30
    at > systemctl restart httpd
    at > 同时按下 Ctrl + D 组合键来结束编写计划任务
    job 3 at Mon Apr 27 23:30:00 2017
    
    • 方法2
    # echo "systemctl restart httpd" | at 23:30
    job 4 at Mon Apr 27 23:30:00 2017
    

    查看刚刚创建的任务

    # at -l
    3 Mon Apr 27 23:30:00 2017 a root
    4 Mon Apr 27 23:30:00 2017 a root
    

    刚刚创建了2个一样的定时任务,删掉一个

    // 删除序号3的定时任务
    # atrm 3
    // 再次查看
    # at -l
    4 Mon Apr 27 23:30:00 2017 a root
    

    周期性定时任务

    周期性地、有规律地执行某些具体的任务,依赖Linux系统的crond服务
    命令 crontab -e 创建、编辑计划任务
    命令 crontab -e -u <username> 编辑他人的计划任务
    命令 crontab -l 查看当前计划任务
    命令 crontab -r 删除某条计划任务

    下图,使用crond服务设置任务的参数格式,注意的是,如果有些字段没有设置,则需要使用星号(*)占位,如图4-23所示


    使用crond设置任务的参数字段说明
    字段 说明
    取值为0~59的整数
    取值为0~23的整数
    取值为0~31的整数
    取值为1~12的整数
    星期 取值为0~7的任意整数,其中0与7均为星期日
    命令 要执行的命令或程序脚本

    输入 crontab -e 命令来创建计划任务:每周一、三、五的凌晨3点25分,重启网络服务

    # crontab -e
    no crontab for root - using an empty one
    crontab: installing new crontab
    # crontab -l
    25 3 * * 1,3,5 systemctl restart httpd
    
    • 除了用逗号(,)来分别表示多个时间段,例如“8,9,12”表示8月、9月和12月
    • 还可以用减号(-)来表示一段连续的时间周期(例如字段“日”的取值为“12-15”,则表示每月的12~15日)
    • 用除号(/)表示执行任务的间隔时间(例如“*/2”表示每隔2分钟执行一次任务)

    在crond服务中,多条计划任务的命令语句,每行仅写一条
    在crond服务的计划任务参数中,所有命令一定要用绝对路径的方式来写
    获取文件的绝对路径,可用whereis命令进行查询

    我们再添加一条计划任务,功能:每周一至周五的凌晨1点钟自动清空/tmp目录内的所有文件

    # whereis rm
    rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz /usr/share/man/man1p/rm.1p.gz
    # crontab -e
    crontab: installing new crontab
    # crontab -l
    25 3 * * 1,3,5 systemctl restart httpd
    0 1 * * 1-5 /usr/bin/rm -rf /tmp/*
    

    注意事项

    • 在crond服务的配置参数中,可以以#号开头写上注释信息
    • 计划任务中的字段必须有数值,绝对不能为或是*号
    • 星期字段不能同时使用,否则就会发生冲突

    相关文章

      网友评论

          本文标题:定时计划任务(RHEL7)

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