linux at命令详解
##at命令介绍
linux 中执行任务计划有三种命令:at ,batch ,cron.其中,at,batch 是一次性执行,而crontab,则是周期性执行。
指令:at
定时任务,指定一个时间执行一个任务,只执行一次。
语法:# at [参数] [时间]
at> 执行的指令
退出at命令 ctrl+d
命令前提:
需要开启atd进程(在redhat中atd是默认随系统启动而启动)
测试中发现在centos6.5 mini版中没有自带at服务,因此需要自己通过下载
##at命令使用
# yum install at -y
# /etc/init.d/atd status
# ps -ef|grep atd
# chkconfig --list|grep atd
举个例子
# atq //查询当前的等待任务,被执行之后就不会显示
# at 10:11 //定时10点11分
at> echo "123" > /root/jiankong_log/haha.txt //输入,回车换行
at> <EOT> //CTRL+D保存退出
job 5 at 2016-04-29 10:11
# atq
5 2016-04-29 10:11 a root
再举个例子,有个需求需要注释掉计划任务
# at 23:59
at> sed -i '/Regular3/s/^/#/' /var/spool/cron/root
at> sed -i '/Regular4/s/^/#/' /var/spool/cron/root
at> <EOT>
# atrm 5 //删除系统中由at建立的正在等待被执行的任务
这样写脚本不是很方便,我们可以指定一下脚本
# at -f /root/sh/nginx_cut_log.sh 10:20
job 7 at 2016-04-29 10:20
# atq
7 2016-04-29 10:20 a root
# at -f /root/sh/nginx_cut_log.sh 10:30
job 8 at 2016-04-29 10:30
# atq
8 2016-04-29 10:30 a root
7 2016-04-29 10:20 a root
# date
Fri Apr 29 10:19:23 CST 2016
到点了查看一下脚本是否执行
at -c 8 //打印序号为8的内容
##常见参数:
-m :当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I :atq的别名
-d :atrm的别名
-v :显示任务将被执行的时间
-c :打印任务的内容到标准输出
-V :显示版本信息
-q :后面加<列队> 使用指定的列队
-f :后面加<文件> 从指定文件读入任务而不是从标准输入读入
-t :后面<时间参数> 以时间参数的形式提交要运行的任务
##定义时间
1、HH:MM
说明:在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此任务。
ex> 04:00
2、HH:MM YYYY-MM-DD
说明:规定在某年某月的某一天的特殊时刻进行该项任务
ex> 04:00 2009-03-17
3、HH:MM[am|pm] [Month] [Date]
说明:规定在某年某月某日的某时刻进行该项任务
ex> 04pm March 17
4、HH:MM[am|pm] + number [minutes|hours|days|weeks]
说明:规定在某个时间点再加多少时间后才进行该项任务
ex> now + 5 minutes
ex> 04pm + 3 days
好了,就这样,其他我也没用过