计划任务详解

计划任务:根据自己的时间计划去执行指令或者执行脚本,让计算机到时间自动运行。

分类

         》 一次性计划任务  at (服务名为atd) 软件名为at

        》周期性计划任务分为两种:1、crontab  -e  ,2、/etc/crontab

 

============   一次性计划任务   ======================
  

RHEL 7    
        systemctl start atd       临时启动服务 
        systemctl enable atd      开机自启动

设置方法:

    相对计时法
            now + n minutes   n分钟后
	    now + n hours         n小时后
	    now + n days        n日后
	    now + n weeks       n周后
        例如:
           #一分钟后输出“2222..”到终端pts0 ,按ctrl+d完成输入
         [root@class2 ~]# at now +1 minutes
         at> echo "2222222222" > /dev/pts/0
         at> <EOT>
         job 1 at Wed Dec  6 08:05:00 2017
         Can't open /var/run/atd.pid to signal atd. No atd running?
    
    
     绝对计时法:
         例如:17:30执行任务输出“2222..”到终端pts0 ctrl+d结束输入
          [root@class2 ~]#  at 17:30
          at> echo "2222222222" > /dev/pts/0
          at> <EOT>

相关配置文件:
     /var/spool/at/a000110154c7d2  #at目录下都是计划任务可执行程序,
            记录和保存所有用户的计划任务,执行完成之后,文件消失。也可
            以在这里直接删除对应的执行文件,达到删除任务效果
     /etc/at.allow      #允许使用at的用户 在里面直接添加用户名
     /etc/at.deny	      #禁止使用at的用户   在里面直接添加用户名


相关命令:
     at -l #查看和管理系统中的计划任务 每个任务对应一个序号
     at -c  18 #查看序号为18的任务的详情,主要看最后的部分。
     at -d  17 #删除序号为17的任务

===============周期性计划任务==========================

 

       1、使用命令:crontab  -e 【user】

           说明:这是个人周期计划任务,不写默认为当前用户的计划任务,/var/spool/cron/目录下会有以用户名命名的文件用于存放计划任务
  

格式:(“分时明星”,这样记忆方便一点)


               *      *     *       *        *                 /bin/bash /test/apache.s
              分钟    小时   日      月      星期                 执行命令

时间范围      0-59    0-23  1-31    1-12    0-6


可用的连接符号
      ,      和       不连续
      -      到
      *      每
      /     每隔 ;这里 *  写法等价于 */1





	

   实例:=========================


                   ==1、apache服务器上,要求,"""" 天凌晨 4点钟 4:00 , 备份 /data -→ /backup+

                               0 4 * * * cmd

                  ==2、周二 “”“” 周五,的下午6:00点,备份一次

                              0 18 * * 2,5 command 非连续时间,用 , 号分割

                 ==3、1月份 “”“” 3月份,周二和周六,下午6:00点,备份一次

                            0 18 * 1-3 2,6 command 连续时间段,- 标识

                ==4、天14到18点之间,每 “”“” 10分钟,备份一次

                                 */10 14-18 * * * command 隔 -- */N

               ==5、每天14点到18点之间的 “”“” 10分钟 执行一次
                                 10 14-18 * * * command

                       解析 ### 10 14-18 * * * command
                            14:10 15:10 16:10 17:10 18:10

               == 6、3月份到6月份,和9月份到12月份,周一到周五,中午的12点到14点,每2分钟运行一次 command

                            */2 12-14 * 3-6,9-12 1-5 command

crond            -- 服务程序
crontab        -- 配置工具。
/usr/lib/systemd/system/crond.service       服务启动脚本位置

systemctl start crond       #启动          RHEL6 :  service crond start      
systemctl enable crond       #开机自启      RHEL6 :   chkconfig crond on



crontab 的任务文件保存的位置:==================================
        crontab -e 先写入缓存,保存的时候系统检查没有语法错误,会将新任务写入到
        /var/spool/cron 目录下,以用户名命名的同名文件中。


查 看系统中的crontab任务:======================================
  只有管理员能操作
    crontab -u new1 -l  查看new1用户的任务
    crontab -u new1 -e 编辑new1用户的任务


限制用户使用crontab命令:=======================================

    /etc/cron.allow	        #允许使用crontab命令的用户
    /etc/cron.deny        ##拒绝使用crontab命令的用户

  2、vim /etc/crontab  

         说明:系统级别的计划任务比crontab级别高,一般用这种方法来运行备份打包,关键是有run-parts执行目录下脚本。

注意:
    两种方式:
             *   *   *   *   *     root     /test/dir1/test.sh            ####执行单个任务,以root用户运行
             *   *   *   *   *     root     run-parts    /test/dir1    ###运行目录下的所有可执行程序,以root用户运行

举例:
   *   *   *   *   *    root   /bin/echo "111111111" > /dev/pts/0       (直接写命令)
   *   *   *   *   *    root    /test/dir1/test.sh            (运行单个脚本)
   *   *   *   *   *    root    run-parts    /test/dir1      (运行目录下的所有可执行程序)

 

如果系统断电或者宕机,错过任务执行的时间,怎么办?

anacron 任务:
            是cron服务的扩展,配合cron服务一起使用,当系统断电或者宕机,错过任务执行的时间时,系统启动后它会再次执行未执行的任务。


配置文件:/etc/anacrontab

       #period in days                     delay in minutes                    job-identifier                      command
        命令执行的频率(天数)      延迟时间(分钟)                 任务描述                             要执行的命令
        1                                               5 cron.daily                           nice                                  run-parts /etc/cron.daily
         7                                              25 cron.weekly                      nice                                   run-parts /etc/cron.weekly
         @monthly                                45 cron.monthly                    nice                                   run-parts /etc/cron.monthly

说明:

         对于每个计划任务,anacrontab先判断在period(执行频率)期间内是否被执行了,如果没执行则等待delay(延迟时间),再次执行该任务。一般情况下该文件不用修改,知道原理就可以。

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值