zoukankan      html  css  js  c++  java
  • 计划任务at、crontab

    一、at一次性计划任务

    格式:

    at + 时间  命令

    安装at

    # yum install at -y

    如果执行at命令时,出现一下情况

    Can't open /var/run/atd.pid to signal atd. No atd running?

    解决办法:

    # chkconfig --level 35 atd on

    # service atd start

    普通用户也能够做计划任务

    at+未来时间

    # at 2018-11-11

    Ctrl + d结束所要添加执行的命令

    24进制的时间

    # at 10:00 2018-11-11

    # at 21:20 2018-11-11

    12进制时间

    # at 11am 2018-11-11

    # at 9:10pm 2018-11-11

    days天

    # at 10am+10days

    weeks周

    # at 10am+10weeks

    两小时后执行任务

    #at now+2hours

    查看计划任务

    两种方法

    #atq

    #at -l

     

    查看具体的计划任务的内容

     # cd /var/spool/at/

    # ls

    # cat a0000301882038

    删除计划任务

    两种方法

    # atrm 3

    # at -d 8

    一次删除多个计划任务

    # atrm {11..14}

    凡是在at.deny中的是不允许做计划任务的,默认为空(黑名单)

    # vi /etc/at.deny 

    默认不存在,需要创建。允许做计划任务(白名单)

    # vi /etc/at.allow

     二、crontab周期性计划任务

    查看服务状态

    # service crond status

    # systemctl status crond

    停止crontab定时任务执行

    # service crond stop

    # systemctl stop crond

    开启crontab定时任务执行

    # service crond start

    # systemctl start crond

    查看计划任务

    crontab的语法规则格式:

    代表意义 分钟 小时 日期 月份 命令
    数字范围 0~59 0~23 1~31 1~12 0~7 需要执行的命令

    周的数字为 0 或 7 时,都代表“星期天”的意思。

    另外,还有一些辅助的字符,大概有下面这些:

    特殊字符 代表意义
    *(星号) 代表任何时刻都接受的意思。举例来说,0 12 * * * command 日、月、周都是*,就代表着不论何月、何日的礼拜几的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,意思相同

    大致范围如下图:

    编辑计划任务

    # crontab -e

    #分/分钟        时/几点         天/几号         月/几月份       周/星期几       命令
    #如何不考虑某个时间单位的话,那么可以用*来表示,有“每”的意思
     0              7               *               *               *               /bin/aa.sh
     0,5,10         7               *               *               *               /bin/aa.sh
     0,5,10         7               *               *               1-5             /bin/aa.sh
     0,5,10         7               *               *               1-5/1           /bin/aa.sh
    #   /5 每次递增5
     0-10/5         7               *               *               1-5             /bin/aa.sh
     0-10/5,30      7               *               *               1-5             /bin/aa.sh
    
    #----------------------------------------------------------------------------------------
     0              7               *               1-3             1-5             /bin/aa.sh
     0              7               1-10            1-3             *               /bin/aa.sh
    #分、时、月、周是and的关系
    #分、时、天、月也是and的关系
     0              7               1-10            1-3             1-5             /bin/aa.sh
    #天和周是or的关系,满足一个条件即可
    
    
    #如果遇到一个比较复杂的问题,那么把他拆成几个简单的问题就行了
    #例如
    #让你写一个计划任务:每个月最后一天执行/aa.sh
     0              2               31              1,3,5,7,8,10,12 *               /bin/aa.sh

     计划任务保存位置

    # cat /var/spool/cron/root

    删除计划任务

    # crontab -r

    # crontab -l

    系统中存在的计划任务

    # ls /etc/cron*

     

    凡是在at.deny中的是不允许做计划任务的,默认为空(黑名单)

    # vi /etc/cron.deny 

    默认不存在,需要创建。允许做计划任务(白名单)

    # vi /etc/cron.allow

    例子:

    #每天早上6点10分
    10 6 * * * date
    
    #没两个小时
    0 */2 * * * date
    
    #晚上11点到早上8点之间每2个小时,早上8点
    0 23-7/2,8 * * * date
    
    #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
    0 11 4 * mon-wed date
    
    #1月份一号早上4点
    0 4 1 jan * date

    管理系统临时文件

    临时文件存放位置

    /tmp/不能删除该目录

    # systemctl list-unit-files | grep tmpfile

    systemd-tmpfiles-setup.service这个服务定期读取一下三个目录

     # ls /usr/lib/tmpfiles.d/

     # ls /run/tmpfiles.d/

    # ls /etc/tmpfiles.d/

    优先级从上到下依次增高,最后不要去动上面两个里面的内容

     创建aa.conf

    使aa.conf生效

    # systemd-tmpfiles --create aa.conf

    # systemd-tmpfiles --clean aa.conf

     

     # cd /usr/lib/systemd/system

    # vi systemd-tmpfiles-clean.timer 

     

    [Unit]
    Description=Daily Cleanup of Temporary Directories
    Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
    
    [Timer]
    OnBootSec=15min
    OnUnitActiveSec=1d

    #当我们的系统运行15分钟或者说systemd服务运行15分钟之后, 就会执行systemd-tmpfiles这个命令

    #如果系统没有重启,每隔一天执行这个命令

    参考博客:

    crontab的语法规则格式(每分钟、每小时、每天、每周、每月、每年定时执行 规则)

    https://blog.csdn.net/xinyflove/article/details/83178876

  • 相关阅读:
    hdu 2014 青年歌手大奖赛_评委会打分
    java 图像灰度化与二值化
    hdu 2010
    如何搞定IE+google双内核的360浏览器表单自动回填兼容问题
    多预览小图焦点轮播插件lrtk
    多功能前台交互效果插件superSlide
    自适应标题延展线写法
    二级菜单延迟隐藏
    各种浏览器的Hack写法(chrome firefox ie等)
    jQuery treetable【表格多重折叠树功能及拖放表格子元素重新排列】
  • 原文地址:https://www.cnblogs.com/djlsunshine/p/9940540.html
Copyright © 2011-2022 走看看