计划任务:
Linux中几乎任务分为两种,突发性和周期性~分别对应的两种服务即是,at、cron 。
At:at是个可以处理仅执行一次就结束排程的指令,不过要执行at时,必须要有atd这个服务的启动才行。
Crontab:crontab这个指令所设定的工作将会循环的一直进行下去,可循环的时间为:分钟、小时、每周、每月、每年等。同样crontab也需要crond这个服务启动才行。
首先说明下at的计划任务~~
1. 启动atd服务。/etc/init.d atd start
2. 使之开启自启动。chkconfig atd on
Atd的计划任务通过/etc/at.deny与/etc/at.allow两个文件来控制具体人的使用权限。(注意:当两个文件同时存在某个用户时,那么该用户可以最终是可以使用at计划任务的。如果两个文件都不存在某个用户,那么只能root用户使用at计划任务。)
3. at的用法实练。
[root@rhce ~]# at [-mldv] TIME
[root@rhce ~]# at –c 工作编号
选项参数:
-m :当at的工作完成后,即使没有输错信息,也发邮件给该使用者通知工作已经完成。
-l :at –l 相当于atq,列出目前系统上面的所有该使用者的at计划任务。
-d :at –d 相当于adrm,可以取消一个在at计划任务中的工作。
-v :可以使用叫明细的时间格式列出at计划任务中的工作列表。
-c :可以列出后面接的该项工作的实际指令内容。
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
就是說,在某個時間點『再加幾個時間後』才進行。
[root@rhce ~]# date
2012年 12月 04日 星期二 03:09:46 EST
[root@rhce ~]# at 3:30 (设置在今日的3:30分执行计划任务)
at> /sbin/ifconfig
at> <EOT>
job 5 at 2012-12-04 03:30
[root@rhce ~]#
[root@rhce ~]# at –l (查看已设置的计划任务)
5 2012-12-04 03:30 a root
[root@rhce ~]#
[root@rhce ~]# atq (同at –l效果一样也是查看已设置的计划任务)
5 2012-12-04 03:30 a root
[root@rhce ~]#
4. batch:系统有空时才进行背景任务
其实batch也是利用at来进行指令的下达的,只是加入一些控制参数而已。这个batch神奇的地方就在于:他会在cpu工作负载小于0.8的时候,才进行你所下达的工作任务。
範例一:同樣是機房停電在 2009/3/17 23:00 關機,但若當時系統負載太高,則暫緩執行
[root@www ~]# batch 23:00 2009-3-17
at> sync
at> sync
at> shutdown -h now
at> <EOT>
job 6 at 2009-03-17 23:00
[root@www ~]# atq
6 2009-03-17 23:00 b root
[root@www ~]# atrm 6
下来介绍一下crontab计划任务了~~
1. 同样也是需要启动crond服务的。/etc/init.d/crond start
2. 使之开机自启动。chkconfig crond on
Crond服务也是使用/etc/cron.allow和/etc/cron.deny两个文件控制具体用户是否具有使用crontab命令的权限。
l /etc/cron.allow:将可以使用crontab的帐号写入其中,若不在这个文件中的使用者则不可使用crontab。
l /etc/cron.deny:将不可以使用crontab的帐号写入其中,若没有在这个文件中的使用者就可以使用crontab。
3. crontab用法实练。
Crontab [-u username] [ -l | -e | -r ]
选项与参数:
-u :只有root才能进行这个任务,亦即帮其他使用者建立或者移除ccrontab计划任务。
-e :编辑crontab的工作内容。
-l :查看crontab的工作内容。
-r :移除所有的crontab工作内容,若仅要移除一项,使用-e去编辑即可。