【1】at
在windows系统中,windows提供了计划任务这一功能,在控制面板-< 性能与维护-< 任务计划, 它的功能就是安排自动运行的任务。 通过'添加任务计划'的一步步引导,则可建立一个定时执行的任务。
在linux系统中你可能已经发现了为什么系统常常会自动的进行一些任务?这些任务到底是谁在支配他们工作的?在linux系统如果你想要让自己设计的备份程序可以自动在某个时间点开始在系统底下运行,而不需要手动来启动它,又该如何处置呢? 这些例行的工作可能又分为一次性定时工作与循环定时工作,在系统内又是哪些服务在负责? 还有,如果你想要每年在老婆的生日前一天就发出一封信件提醒自己不要忘记,linux系统下该怎么做呢?
今天我们主要学习一下一次性定时计划任务的at命令的用法!
1.命令格式:
at [参数] [时间]
2.命令功能:
在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程(
ps -ef | grep atd查看, 开启用/etc/init.d/atd start or restart; 开机即启动则需要运行chkconfig --level 2345 atd on)。
3.命令参数:
-m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I atq的别名
-d atrm的别名
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V 显示版本信息
-q< > 使用指定的列队
-f< > 从指定文件读入任务而不是从标准输入读入
-t< > 以时间参数的形式提交要运行的任务
at允许使用一套相当复杂的指定时间的方法。他能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。 上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:now + count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
TIME:时间格式,这里可以定义出什么时候要进行at 这项任务的时间,格式有:
HH:MM
ex< 04:00
在今日的 HH:MM时刻进行,若该时刻已超过,则明天的 HH:MM进行此任务。
HH:MM YYYY-MM-DD
ex< 04:00 2009-03-17
强制规定在某年某月的某一天的特殊时刻进行该项任务
HH:MM[am|pm] [Month] [Date]
ex< 04pm March 17
也是一样,强制在某年某月某日的某时刻进行该项任务
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex< now + 5 minutes
ex< 04pm + 3 days
就是说,在某个时间点再加几个时间后才进行该项任务。
4.使用实例:
实例1:三天后的下午5 点钟执行/bin/ls
命令:
at 5pm+3 days
输出:
[root@localhost ~]#at 5pm+3 days
at< /bin/ls
at<
job 7 at 2013-01-08 17:00
[root@localhost ~]#
实例2:明天17点钟,输出时间到指定文件内
命令:
at 17:20 tomorrow
输出:
[root@localhost ~]#at 17:20 tomorrow
at< date </root/2013.log
at<
job 8 at 2013-01-06 17:20
[root@localhost ~]#
ctrl+z 保存退出!
实例3:计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务
命令:
atq
输出:
[root@localhost ~]#atq
8 2013-01-06 17:20 a root
7 2013-01-08 17:00 a root
实例4:删除已经设置的任务
命令:atrm 7
[root@localhost ~]#atq
8 2013-01-06 17:20 a root
7 2013-01-08 17:00 a root
[root@localhost ~]#atrm 7
[root@localhost ~]#atq
8 2013-01-06 17:20 a root
实例5:显示已经设置的任务内容
命令:
at -c 8
输出:
[root@localhost ~]#at -c 8
#!/bin/sh
#atrun uid=0 gid=0
#mail root 0
umask 22此处省略n个字符
date </root/2013.log
[root@localhost ~]#