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 ~]# date2012年 12月 04日 星期二 03:09:46 EST[root@rhce ~]# at 3:30 (设置在今日的3:30分执行计划任务)at> /sbin/ifconfigat> <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-17at> syncat> syncat> shutdown -h nowat> <EOT>job 6 at 2009-03-17 23:00 [root@www ~]# atq6 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计划任务。