Linux中的任务计划

有两种方式:

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

我们可以用下面两个命令:atbatch

 at 时间                   #指定时间

 at> CMMAND            #要执行的命令

 at>Ctrl+d  #提交任务

 

指定时间的方式:

绝对时间:HH:MM(几点几分)、DD.MM.YY(日月年)、MM/DD/YY(月日年)

相对时间:now+#   如:now+3minutes  即三分钟后 

单位:minuteshoursdaysweeks

模糊时间:noon,midnight,teattime

 

at -l=atq)  显示当前作业

at -d=atrmAT_JOB_ID     删除指定作业

 

Linux中的任务计划_任务计划

 

Linux中的任务计划_任务计划_02

命令的执行结果:将以邮件的形式

 

Linux中的任务计划_任务计划_03

batch不需要指定时间它会在系统空闲的时候自动执行任务,其他的都和at相同

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

     cron:自身是一个不间断运行的服务

 anacron:它是cron的补充,能够实现让cron因为各种原因在过去的时间该执行而未执行的任务再恢复正常执行一次

cron分为两类:  

1)系统cron任务

都定义在/etc/crontab下  格式为:分钟 小时 天 月 周 用户 任务

 

Linux中的任务计划_任务计划_04

2)用户cron任务

都定义在/var/spool/cron/USERANME   格式为:分钟 小时 天 月 周 任务

时间的有效取值:

分钟:0-59

小时:0-23

天:1-31

月:1-12

周:0-7,07都表示周日

时间的统配表示:

*:对应的所有有效取值

3 * * * *           #每小时的第三分钟

3 * * * 7   #每个周日的每小时第三分钟

13 12 6 7 *         #每年的七月六号十二点十三分

,:离散时间点

10,40  * * * *       #每小时的第十分和第四十分

10,40 02 * * 2,5      #每周二、周五的凌晨两点十分和凌晨四十分

-:表示连续时间点:

10 02 * * 1-5        #每周从周一到周五的凌晨两点十分

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

*/3 * * * *          #每三分钟一次

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

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

执行结果将以邮件形式发给管理员:如果不想让它都发给管理员可以送到/dev/null 目录下,如:*/3 * * * * /bin/cat /etc/fstab > /dev/null   错误信息发给管理员

*/3 * * * * /bin/cat /etc/fstab &> /dev/null    无论正确错误的都不发给管理员

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

cron PATH一般只包含 /bin:/sbin:/usr/bin:/usr/sbin

在脚本中可以直接定义PATH变量如下图:

 

Linux中的任务计划_任务计划_05

用户任务的管理:

crontab

-l: 列出当前用户的所有cron任务

-e: 编辑 

-r: 移除所有任务

-u USERNAME: 管理其用户的cron任务

anacron: 它是对cron的补充,不能替代cron

配置文件/etc/anacrontab

 

Linux中的任务计划_任务计划_06