Chinaunix首页 | 论坛 | 博客
  • 博客访问: 72437
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 102
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-09 23:07
文章分类
文章存档

2019年(1)

2016年(1)

2015年(1)

2014年(4)

我的朋友

分类: LINUX

2014-05-17 11:21:58

 未来只做一次                            at          (依赖于atd服务)
 未来周期性做                            cron      (依赖于crond服务)
 cron补充(开机后执行)                anacron  (依赖于anacron服务)
at: 

at 命令被用来在指定时间内调度一次性的任务。
at [-mldv] TIME 
选项与参数: 
-m :当at的任务完成后,即使没有输出信息,也以 email 通知给使用者 
-l :列出目前系统上面的所有该使用者的at任务(同atq) 
-d :可以取消一个在 at 任务(同atrm) 
-v :可以使用较明显的时间格式列出 at 任务 
-c :可以列出后面接的该项任务的内容
=============
at命令的时间格式: 
now + 时间 :时间以 minutes、hours、days、或 weeks 为单位 
HH:MM :24小时制度,如果时间已过,就会在第二天的这一时间执行 
midnight :表示00:00 
noon :表示12:00 
teatime :表示16:00
=============
[root@rhel6 ~]# at 13:10 //定义一个at任务在13:10执行 
at> date >> /tmp/at //将当前时间输入/tmp/at文件 
at> echo "at command test" >> /tmp/at 
at> uname -r >> /tmp/at 
at> //另选一行按Ctrl+D退出at命令模式 
job 1 at 2012-12-28 13:10 
[root@rhel6 ~]# at now + 1 minutes //再定义一个at任务在1分钟后执行 
at> date >> /tmp/at 
at> echo "at command test again" >> /tmp/at 
at> sleep 10 
at> date >> /tmp/at 
at>  
job 2 at 2012-12-28 13:10 
==================
date命令:
设置时间
[root@teacher init.d]# date
Tue Mar 19 15:20:28 EDT 2013
[root@teacher init.d]# date +%F
2013-03-19
[root@teacher init.d]# date +%Y%m%d
20130319
[root@teacher init.d]# date +%Y%m%d-%M
20130319-21
[root@teacher init.d]# man date
[root@teacher init.d]# date +%F%T
2013-07-2609:51:16
[root@teacher init.d]# date +%F-%T
2013-07-26-09:51:20
[root@teacher init.d]# date +%F_%T
2013-07-26_09:51:52
[root@teacher init.d]#
[root@rhel6 ~]# date 
Fri Dec 28 13:09:09 CST 2012 
============
[root@rhel6 ~]# atq //显示系统中所有的at任务 
2 2012-12-28 13:10 a root 
1 2012-12-28 13:10 a root 
[root@rhel6 ~]# cat /tmp/at 
Fri Dec 28 13:10:00 CST 2012 
Fri Dec 28 13:10:00 CST 2012 
at command test 
at command test again 
2.6.32-220.el6.x86_64 
Fri Dec 28 13:10:10 CST 2012 //对比两个时间可见at任务是按顺序执行命令的
========================
cron
任务调度的crond常驻命令
crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中: 
文件                                                                              含义 
/etc/cron.deny                                           该文件中所列的用户不允许使用Crontab命令 
/etc/cron.allow                                       该文件中所列的用户允许使用Crontab命令 
/var/spool/cron/                                                是所有用户的crontab文件 
/var/spool/cron/crontabs                Crontab命令的格式为:crontab –l|-r|-e|-i [username],其参数含义如表一: 
=====================================================
参数名称                           含义                                                            示例 
-l                    显示用户的Crontab文件的内容                                         crontabl –l 
-i                    删除用户的Crontab文件前给提示                                      crontabl -ri 
-r                   从Crontab目录中删除用户的Crontab文件                           crontabl -r 
-e                  编辑用户的Crontab文件                                                    crontabl -e 
=====================================================
用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。
它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,
格式如下:* * * * * 
其时间段的含义:
段                                         含义                            取值范围 
第一段                               代表分钟                           0—59 
第二段                               代表小时                           0—23 
第三段                               代表日期                           1—31 
第四段                               代表月份                           1—12 
第五段                   代表星期几,0代表星期日               0—6
================================================== 

名称 : crontab 
使用权限 : 所有使用者 
使用方式 : 
crontab [ -u user ] file 
crontab [ -u user ] { -l | -r | -e } 
说明 : 
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。 
餐数 : 
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe) 
-r : 删除目前的时程表 
-l : 列出目前的时程表 
时程表的格式如下 : 
f1 f2 f3 f4 f5 program  
  
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。 
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推 
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推 
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推 
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推 
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。 
例子 : 
每月每天每小时的第 0 分钟执行一次 /bin/ls : 
0 7 * * * /bin/ls  
  
在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup : 
0 6-12/3 * 12 * /usr/bin/backup  
  
周一到周五每天下午 5:00 寄一封信给 gaun@adair.name : 
0 17 * * 1-5 mail -s "hi" guan@adair.name  /dev/null 2>&1 即可 
例:如果用户的Crontab文件的内容是:29 19 * * * echo its dinner time,则系统每天的19:29显示‘its dinner time’
===========================
 crontab文件的一些例子:
 30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启lighttpd 。

 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启lighttpd 。

 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启lighttpd 。

 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启lighttpd 。

 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启lighttpd 。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启lighttpd

 * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启lighttpd

 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启lighttpd

 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启lighttpd
anacron
待更新

阅读(3228) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~