首页 > 代码库 > Linux命令:任务计划Cron,at,batch

Linux命令:任务计划Cron,at,batch

任务计划:

 

1、在未来的某个时间点执行一次某任务;

    at     指定时间执行

    batch  空闲时间执行

   

    at 时间

    at>COMMAND

    at>Ctrl+d

   

    指定时间:

        绝对时间:HH:MM, DD.MM.YY  MM/DD/YY

        相对时间:now+#

            单位:minutes,hours, days, weeks

        模糊时间:noon, midnight, teatime

   

    命令的执行结果:将以邮件的形式发送给安排任务的用户

[root@test tmp]# at now+1min

at> ls /tmp           
at> <EOT>     #按ctl + d
job 2 at 2016-12-02 17:17

[root@test tmp]# at -l      相当于atq
3    2016-12-02 17:17 a root

[root@test tmp]# at -d     相当于atrm
3    2016-12-02 17:17 a root


  2、周期性地执行某任务;


cron命令简介:

linux中有一个命令可以定期来执行系统任务。这就是crond服务。


1.命令格式:

  cron   [选项][文件]


crontab -l    //列出当前的所有调度任务

crontab -l -u jp   //列出用户jp的所有调度任务

crontab -r    //删除所有任务调度工作

crontab -e

  Minute Hour Day Month Dayofweek command

  分钟 小时 天 月 天每星期 命令

  Minute 每个小时的第几分钟执行该任务

  Hour 每天的第几个小时执行该任务

  Day 每月的第几天执行该任务

  Month 每年的第几个月执行该任务

  DayOfWeek 每周的第几天执行该任务


2.命令功能:

cron:自身是一个不间断运行的服务   service crond {start|stop|restart|reload|status}

anacroncron的补充,让cron因为各种原因在过去的时间该执行而未执行的任务在恢复正常执行一次

    系统cron任务:

        /etc/crontab

       分钟  小时  天  月  周  用户  任务

    用户cron任务:

        /var/spool/cron/USERNAME

       分钟  小时  天  月  周  任务


    时间的有效取值:

分钟:0-59  小时:0-23  天:1-31  月:1-12  周:0-7,0和7都表示周日

           

    时间通配表示:

       *    对应时间的所有有效取值

       3 * * * *

       3 * * * 7

       13 12 6 7 *

       ,    离散时间点: 10,40 02 * * 2,5

       -    连续时间点: 10 02 * * 1-5

       /#   对应取值范围内每多久一次:   */3 * * * *

              

5 * * * * ls //指定每小时的第5分钟执行一次ls命令

30 5 * * * ls //指定每天5:30执行一次执行ls命令

40 7 18 * * ls //指定每月18号的7:40分执行ls命令

30 5 18 6 * ls //指定每年的6月18日5:30执行ls命令

50 6 * * 0 ls //每星期日的6:50执行ls命令 [可用英文表示,sun表示星期天,mon星期一]

30 3 10,20 * * ls //每月10号及20号的3:30执行ls命令 [“,”连接多个不连续的时段 ]

25 8-11 * * * ls //每天8-11点的第25分钟执行ls命令 [“-”连接连续的时段 ]

*/15 * * * * ls //每15分钟执行一次[即每个小时的第0 15 30 45 60分钟执行ls命令]

0 */7 * * * ls //指定每7小时执行一次ls命令[即每天的第0 7 14 21点整执行ls命令]

* */7 * * * ls //每天7小时执行一次ls命令[即每天的第0 7 14 21点的一小时中的每分钟]

30 6 */10 * * ls //每月每隔10天6:30执行一次ls命令[每月的1、11、21、31日的6:30]


每天7:55以root 身份执行/etc/cron.daily目录中的所有可执行文件

55 7 * * * root run-parts /etc/cron.daily //[红色表示执行后面目录中的所有可执行文件]

        每两小时执行一次:    08 */2 * * *

        每两天执行一次:     10 04 */2 * *

   

    执行结果将以邮件形式发送给管理员:命令要绝对路径

        */3 * * * * /bin/cat /etc/fstab  > /dev/null   #正常结果清除,错误结果仍发邮件

        */3 * * * * /bin/cat /etc/fstab  &> /dev/null   #所有结果清除


    cron的环境变量:cron执行所有命令都去PATH环境变量指定的路径下去找

#!/bin/bash

PATH /bin:/sbin:/usr/bin:/usr/sbin  #定义PATH环境变量

#如去掉参数rum-parts,后面就可以写要运行的某个脚本名,而不是文件夹名了

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

[root@fox etc]# ls cron*
cron.deny  crontab
cron.d:
0hourly  sysstat
cron.daily:
logrotate  makewhatis.cron  mlocate.cron  prelink  readahead.cron  tmpwatch
cron.hourly:
0anacron  mcelog.cron
cron.monthly:
readahead-monthly.cron
cron.weekly:
99-raid-check

[root@fox etc]# ls /var/spool/cron/
hadoop


---end---

Linux命令:任务计划Cron,at,batch