zoukankan      html  css  js  c++  java
  • 一次性计划at和长期计划crontab

    计划任务

    计划任务分为 一次性的和长期的计划

    at:一次性计划。执行该命令,得启动atd服务,而centos是默认启动的
    crontab:长期计划,执行该命令,得启动crond服务

    atd服务运行状态

    [root@aubin aubin]# systemctl status atd
    ● atd.service - Job spooling tools
       Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)   是否开机启动
       Active: active (running) since 三 2020-12-09 18:10:00 CST; 48min ago    启动
     Main PID: 5404 (atd)
        Tasks: 1
       CGroup: /system.slice/atd.service
               └─5404 /usr/sbin/atd -f
    
    12月 09 18:10:00 aubin systemd[1]: Started Job spooling tools.
    
    
    
    at执行前,需要将一次性任务写入/var/spool/at/目录中,再配合atd服务到条件满足执行任务。
    
    查看
    [root@aubin aubin]# ls /var/spool
    abrt  abrt-upload  anacron  at  cron  cups  lpd  mail  plymouth  postfix
    
    
    
    查看所有at命令所有配置文件
    root@aubin aubin]# ls /etc/at.*
    /etc/at.deny     该文件写入的用户名不可以使用at命令,而/etc/at.allow,该文件写入的用户才可以使用at命令
    若两文件都不存在,则只有root用户可以使用at命令
    

    at的使用

    格式: at 时间
          at >  命令/脚本
          at > <EoT>
    在定时任务中,命令还是脚本最好使用绝对路径
    时间方式:now,minutes,hours,days,weeks,2020-12-17,15:18,tomorrow,today,yesterday
    

    参数 说明
    -m 当at的任务完成后,即发email通知使用者该任务已完成
    -l 列出目前系统上面的所有at计划
    -d 可以取消一个在at计划中的任务
    -v 显示任务将被执行的时间
    -c 打印任务的内容到标准输出
    -q 新任务的列队名称
    -f 从指定文件读入任务,而不是从标准输入读入
    -t 时间参数的形式提交要运行的任务



    比如:
    三天后的下午重启httpd服务          设置电脑于23:20关机   明天17点,输出时间到指定文件夹   在2020-01-13 14:16查看文件1.txt,并追加写入2.txt,删除1.txt
    at  5pm+3days                     at 23:20             at 17:00  tomorrow               at  14:16   14:16  2020-01-13       
    at > systemctl restart httpd      at > reboot          at  >   date >/root/2013.log     at  > cat 1.txt >>2.txt
    at > <EoT>                        at > <EoT>           at  > <EoT>                      at  > rm-rf   1.txt
                                                                                            at  > <EoT> 
    





    crontab命令

    crontab:循环计划任务
    
    增加全局性的计划任务时,直接修改/etc/crontab。一般不建议这样做,可以把计划任务写入/etc/cron.d目录
    例如,增加一项定时的备份任务,在/etc/cron.d目录下新建文件backup.sh,内容如下:
    
        # m h dom mon dow user command
        * 1 * * * root /sbin/mon_zetc_logtar.sh
    cron进程执行时,就会自动扫描该目录下的所有文件,按照文件中的时间设定执行后面的命令。
    cron执行时,也就是要读取三个地方的配置文件:一是/etc/crontab,二是/etc/cron.d目录下的所有文件,三是每个用户的配置文件
    控制用户使用的权限文件:/etc/cron.allow ,/etc/cron.deny
    




    crond服务的启动

    service crond restart    启动crond服务
    systemctl status crond   启动crond服务
    systemctl enable crond  将crond服务加入启动项
    /etc/cron.allow 写入该文件的用户是可以执行crontab命令的
    /etc/cron.deny  写入该文件的用户不能执行crontab命令的
    



    crontab的使用

    在循环任务中,命令还是脚本最好使用绝对路径
    时间方式:now,minutes,hours,days,weeks,2020-12-17,15:18,tomorrow,today,yesterday
    



    参数 说明
    -u 当at的任务完成后,即发email通知使
    -e 编辑某crontab任务的内容
    -l 查看crontab的任务内容
    -r 删除所有crontab的任务内容

    查看全局性的计划任务

    [root@aubin aubin]# cat /etc/crontab
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    

    查看存放循环计划的文件

    [root@aubin aubin]#   ls /etc/cron.d/
    0hourly  raid-check  sysstat
    [root@aubin aubin]#   ls /etc/cron.d/0hourly 
    /etc/cron.d/0hourly
    [root@aubin aubin]#   cat /etc/cron.d/0hourly 
    # Run the hourly jobs
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    01 * * * * root run-parts /etc/cron.hourly
    



    /var/spool/cron
    此目录下存放各个用户的任务文件。各个用户的任务存放在以自已用户名为文件名的任务文件中。
    cat/var/spool/cron
    [root@aubin aubin]# ls /var/spool
    abrt  abrt-upload  anacron  at  cron  cups  lpd  mail  plymouth  postfix
    
    cron执行的每一项任务都会被记录到/var/log/cron 日志文件中
    



    格式:分 时 日 月 周 任务内容(命令)


    比如
    每周一,周三,周五的凌晨3点25分打印hello world 到 /tmp/txt中
    25 3 * * 1,3,5 echo ”Hello World!!!” > /tmp/txt”
    
    
    指定每小时的第41分钟执行一次ls命令
    41 * * * * ls
    
    
    每1分钟执行一次myCommand
    * * * * * myCommand
    
    
    
    每小时的第3和第15分钟执行
    3,15 * * * * myCommand
    
    
    每周一上午8点到11点的第3和第15分钟执行
    3,15 8-11 * * 1 myCommand
    
    
    每隔两天的上午8点到11点的第3和第15分钟执行
    3,15 8-11 */2  *  * myCommand
    
    
    实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
    0,30 18-23 * * * /etc/init.d/smb restart
    
    
    每天7:50开启ssh服务
    50 7 * * * /sbin/service sshd start  
    
    
    每月1号和15号检查/home 磁盘
    0 0 1,15 * * fsck /home  
    



    参考文档

    https://blog.nowcoder.net/n/e7cc270ed9ae4957971c37cd6a33cba4
    https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
    https://blog.csdn.net/wangmx1993328/article/details/81235245

    当你的才华配不上你的野心,努力的时候到了!
  • 相关阅读:
    Python——极限编程
    RPC是什么?科普一下
    缓存在高并发场景下的常见问题
    如何提高缓存命中率
    数据库性能优化的误区
    缓存在大型网站架构中的应用
    APP多版本共存,服务端如何兼容?
    水平分库分表的关键问题及解决思路
    分库分表的几种常见玩法及如何解决跨库查询等问题
    分布式系统事务一致性解决方案
  • 原文地址:https://www.cnblogs.com/xwdzj/p/14106480.html
Copyright © 2011-2022 走看看