分类: LINUX
2015-07-10 14:48:06
在linux实现任务计划的命令有三个:at,batch,crond
at: 在未来的某个时间点定期执行一次任务(可以是一条或者多条命令组合,可以是一个脚本)
at的使用非常方便灵活,at后面可以跟各种各样的时间格式,如:
at 18:00pm July 9
at 6 pm Monday
at 2:00
at noon + 5 minutes(具体可以使用的时间格式可以#man at来查看文档)
在命令行输入上面任意一种格式之后,回车可以在之后的at>提示符下输入任务指令,完成后Ctrl+D存盘退出。例如:
At now+5min //设定任务计划时间
At> //命令输入处
At> //命令输入处
Ctrl+d //提交计划
另外at可以使用的options还有:
#at -d 作业号 //删除计划任务
#at -l //列出计划任务
默认情况下,任何用户都可以使用at服务,但这样是不安全的。
如果系统中存在at.allow,则只有列在文件中的用户才可以使用at服务。
如果系统中存在at.deny,则列在文件中的用户不可以使用at服务,其他用户可以
总的来说at在实际使用的过程中使用的不是很多,所以这里不做过多介绍
..................................................................
batch :跟at一样也是定期执行的命令,使用方法也跟at相同,但是不同的是batch不需要指定时间,因为它会自动在系统负载比较低的时候执行(平均负载小于0.8的时候)
...................................................................................................................
crond : 它不同于以上命令的原因就是它是一个“周期性”执行的命令,就是循环执行。另外crond 是一个服务,所以我们在使用之前要检查其是否正在运行
#service crond status //检测crond服务是否运行的命令
crond分为两类:
系统cronà跟用户无关的操作系统级别的cron,它是为了维护系统能够正常运行,它所有的任务都定义在/etc/crontab文件当中
格式: * * * * * * *
*表示: min :0-59
hour:0-23
day:1-31
month:1-21
week:0-7
username:执行计划任务的用户 //这一点是跟用户cron不一样的地方
command:命令
用户cronà任务的定义在/var/spool/cron/USERNAME(文件名将会以用户的名字命名)
格式: * * * * * *
*代表: min :0-59
hour:0-23
day:1-31
month:1-21
week:0-7
command:命令
crond计划任务下的命令有:
crontab –e //开始编辑定义自己的任务执行计划
crond -r //删除自己定义的执行计划
crond -l // 列出定义的计划任务
crond -e redhat //帮助redhat用户制定任务计划
还有一点要注意的是:
crond计划任务里面的命令有时候可能不会执行,因为这个文件里的环境变量PATH跟系统PATH不太一样,它的PATH的默认值为PATH=/sbin:/bin:/usr/sbin:/usr/bin,所以这就造成很多命令不能使用,所以解决的办法有两个,可以自己设定PATH环境变量,也可以用命令的绝对路径,比如ls 我们可以使用 :
/bin/ls -l /etc/
下面是具体的例子:
比如:我们要在每月的3号两点十分自动执行ls –al /etc/
#crond -e //开始编辑计划任务
10 02 03 * * ls –al /etc/ //这是在crond -e 打开文件后写入的内容
以下是几个特殊符号在crond中的使用 :"/" "," "-"
"/" 表示“每”的意思 例如:
*/5 * * * * /bin/ls –al /etc/ //表示没五分钟执行一次命令
10 */3 * * * date //每三个小时执行一次命令
","表示离散时间点
20,50 * * * * data //每个小时的第20分钟和第50分钟执行一次命令
"-"表示“到”的意思,用于时间段
00 00 * * 1-5 data //表示每周一到周五的凌晨时间执行命令
但是crond有一个缺点就是它是为服务器设计的命令,所以它默认就是认为系统会7X24小时开机,但是实际情况我们如果在笔记本上装linux操作系统不可能不关机,所以如果在计划的时间点我们关机了,那么这个任务就不会再执行了,因此为了弥补这个缺陷,产生了anacron命令
.............................................................................
要使用 anacron 服务,你必须安装了 anacron RPM 软件包,而且 anacron 服务必须在运行。要判定该软件包是否被安装,使用 rpm -q anacron 命令。要判定该服务是否在运行,使用 /sbin/service anacron status 命令。
配置 anacron 任务
anacron 任务被列在配置文件 /etc/anacrontab 中。文件中的每一行都代表一项任务,格式是:
格式:Period delay job-identifier command
解释:Period 超出时间
delay 开机后延迟多久执行
job-identifier 任务描述
command 要执行的命令
对于每项任务,anacron 先判定该任务是否已在配置文件的 period 字段中指定的期间内被执行了。如果它在给定期间内还没有被执行,anacron 会等待 delay 字段中指定的分钟数,然后执行 command 字段中指定的命令。
要启动 anacron 服务,使用 /sbin/service anacron start 命令。要停止该服务,使用 /sbin/service anacron stop 命令。推荐你在引导时启动该服务。
.....................................................linux 下计划任务的相关命令介绍完毕 ok!