ma系列之-24-任务计划

0 概念:

   在未来的某个时间周期或者单次执行一次某任务

  

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

命令:
 at
 batch : 不需要指定时间点 自动选择系统空闲时刻执行任务, 其余命令和at使用相似
 
 at使用格式:
 at 时间   输入未来要执行的时间
 at> COMMAND  输入命令
 at> Ctrl+d   提交并退出
 
 指定时间:10:10 
 绝对时间:HH:MM, DD.MM.YY  MM/DD/YY
 相对时间:now+#   
 单位:minutes, hours, days, weeks
 模糊时间:noon, midnight, teatime
 
 命令的执行结果:将以邮件的形式发送给安排任务的用户
 
 查看将要有的任务:
 at -l 
 删除某个任务:
 at -d jobid

at的使用案例:
[root@chinadaas11 zm]# at now+3minutes
at> ls /var
at> <EOT>
job 2 at 2015-11-02 16:59
[root@chinadaas11 zm]# date
Mon Nov  2 16:56:39 CST 2015
[root@chinadaas11 zm]# at -l
2       2015-11-02 16:59 a root
[root@chinadaas11 zm]# at -d 2
通过mail查看处理的结果:
[root@chinadaas11 zm]# mail
From [email protected]  Mon Nov  2 16:54:03 2015
Return-Path: <[email protected]>
X-Original-To: root
Delivered-To: [email protected]
Subject: Output from your job        1
To: [email protected]
Date: Mon,  2 Nov 2015 16:54:02 +0800 (CST)
From: [email protected] (root)
Status: R

cache
cvs
db
empty
ftp
games
lib
local
lock
log
mail
nis
opt
preserve
run...
& q  输入q退出查看邮件

2  周期性地执行某任务;

cron:自身是一个不间断运行的服务,运行在一个长期不关机的系统中。
 anacron: cron的补充,能够实现让cron因为各种原因在过去的时间该执行而未执行的任务在恢复正常执行一次;一般很少启用
 
 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 * * *  每天12点13分执行一次
 13 12 * * 5  每周五的12点13分执行一次
 13 12 6 * *  每月6号的12点13分执行一次
 13 12 6 7 *  每年的7月6号12:13分执行一次 
 
 ,表示离散时间点取值: 
  10,40 * * * *  每小时执行2次,10分钟的时候执行一次,40分钟的时候执行一次
  10,40 * * * 2,5  每周二,周五的每小时执行2次,10分钟的时候执行一次,40分钟的时候执行一次
 10,40 02 * * 2,5  每周二,周五的2:10 2:50分执行一次
 
 -表示连续时间点:
 10 02 * * 1-5
 
 /#表示对应取值范围内每多久一次
 */3 * * * *  每间隔3分钟执行一次
 
 01 */2 * * * 每两小时执行一次,执行时间是在对应小时的第一分钟执行,如果写成 * */2 * * * 则成了每间隔2小时下的所有分钟都要执行 这就麻烦大了

 
 10 04 */2 * *  每两天执行一次,只要是要求每间隔多久执行一次,那么其位置左侧的单位必须要有具体数值,具体写法见  每两小时执行一次的写法 
 
 
 执行结果默认将以邮件形式发送给管理员,如果不想这样,可以将正确执行结果发送到 /dev/null 错误结果依旧默认发送到邮件中,写法如下
 */3 * * * * /bin/cat /etc/fstab > /dev/null 
 
 cron的环境变量:cron执行所有命令都去PATH环境变量指定的路径下去找
 PATH的路径有 /bin:/sbin:/usr/bin:/usr/sbin  因此如果在cron中执行的任务的命令不在左侧路径下配置好,那么建议使用绝对路径或者在脚本文件中
 将 export PATH=$PATH:/YOU/PATH  这样cron执行的时候 就会使用脚本中定义的PATH路径

eg:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
01 * * * * /bin/echo "How are you"

 3 用户任务的管理:

 用户任务的管理:
 crontab
 -l: 列出当前用户的所有cron任务
 -e: 编辑 
 -r: 移除所有任务
 -u USERNAME: 管理其用户的cron任务    eg:  crontab -u hadoop -e 来编辑hadoop用户的cron任务
 
 anacron:  是cron的补充,能做
 cat /etc/anacrontab 

查看crond状态
[root@chinadaas11 ~]# service crond status
crond (pid  1904) is running...
[root@chinadaas11 ~]# service anacron status

猜你喜欢

转载自chengjianxiaoxue.iteye.com/blog/2253878
今日推荐