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 root@chinadaas11.localdomain Mon Nov 2 16:54:03 2015
Return-Path: <root@chinadaas11.localdomain>
X-Original-To: root
Delivered-To: root@chinadaas11.localdomain
Subject: Output from your job 1
To: root@chinadaas11.localdomain
Date: Mon, 2 Nov 2015 16:54:02 +0800 (CST)
From: root@chinadaas11.localdomain (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