Linux的计划任务
时间:2010-09-29 来源:fangfuxi
Linux的计划任务
一.At 一次性安装任务计划
查看at服务状态,RED HAT默认是开启的
[root@localhost ~]# service atd status
atp服务的启动,停止,重启 service atd restart |stop |restart
使用方法: at 时间
例如在17:30 删除tmp目录下test.txt文件
[root@localhost ~]# at 17:30
at> /bin/rm -f /tmp/test.txt
at> <EOT>
job 8 at 2010-09-29 17:30
Ctrd +D结束输入
注:执行命令时要用全路径,即不能用 at> rm –f /tmp/test.txt
可用whereis 命令查看
[root@localhost ~]# whereis rm
rm: /bin/rm /usr/share/man/man1p/rm.1p.gz /usr/share/man/man1/rm.1.gz
时间格式表示
1)绝对计时方法
HH:MM[today]
HH:MM tomorrow
HH:MM 星期
Mignighst /12:00AM
noon //12:00
teatime // 4:00PM
2)相对计时
now +n minutes
now +n hours
now +n day
at now+2 minutes //2分钟后执行
查看当前的任务 : Atq 或者 at –l
[root@localhost ~]# at -l
8 2010-09-29 17:30 a root
7 2010-09-29 17:30 a root
已执行的任务不会显示
删除未执行的任务: Atrm 任务号 或者 at –d 任务号
[root@localhost ~]# at -l
8 2010-09-29 17:30 a root
假如我们执行很多计划且要查看具体任务时,这样显得不方便,我们可以命令写在文件里,然后执行.
1) at -f 文件名 时间点
2) at <文件名 时间点
[root@localhost ~]# echo "/bin/rm -f a.txt" >>testrm.txt
[root@localhost ~]# at 17:30
at> at -f /room/testrm.txt
at> <EOT>
job 9 at 2010-09-29 17:30
at的控制文件
/etc/at.allow
/etc/at.deny
系统默认是有at.deny文件,如果某个用户名在这个文件里,他就不能使用at计划任务。如果有at.allow文件,allow文件先行,检查了allow明确允许,就不会检查deny
二 Corn :周期性安排进程任务
[root@localhost ~]# service crond status
crond (pid 2363) 正在运行...
crond服务的启动,停止,重启 service crond restart |stop |restart
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
上面5个星号分别代表:minute hour day-of-month month-of-year day-of-week
星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
整数间的短线(-)指定一个整数范围。如1-4 意味着整数 1、2、3、4
用逗号(,)隔开的一系列值指定一个列表。如3, 4, 6, 8 标明这四个指定的整数
正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。如0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
执行命令
#crontab -e 编辑当前用户的cron表
#crontab -l 查看当前用户的cron表
#crontab -r 删除当前用户的cron进程
#crontab -u 用户名 以某用户的身份来控制cron表
如下命令表进10月3日30分钟删除文件testlog.test(注意命令要用全路径)
Cornd –e
文件格式
分钟 小时 天 月 星期 要执行的命令
30 * 3 10 * /bin/rm -f /tmp/testlog.test
cron 的控制文件
/etc/cron.allow 和 /etc/cron.deny 文件被用来限制对 cron 的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。
无论使用控制文件中的规定如何,根用户都总是可以使用 cron。
如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略;
如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron