at命令:指定一个时间执行一个任务 cron机制:根据一个时间表自动执行任务 anacron机制:在一个指定时间间隔错过后自动执行任务
at命令需要系统后台有一个atd进程 at:安排延时任务 atq:查询当前的等待任务 atrm:删除等待任务 batch:以一个低优先级延时执行任务 例: [root@redhat root]# ps -ef|grep atd //查看atd是否启动 [root@redhat root]# /etc/init.d/atd restart //重新启动atd服务 [root@redhat root]# chkconfig --level 2345 atd on //设置系统启动运行等级是2345时,启动atd服务 [root@redhat root]# at now +1 min //设置一分钟后的任务 at> echo "hello" > /dev/tty2 //将hello输出到tty2 at> <EOT> //ctrl+D job 4 at 2011-11-21 13:44 然后在linux系统中按下快捷键Alt+f2,显示第2个终端可以看到:Redhat login: hello 。 [root@redhat root]# at 13:55 //设置13:55后的计划任务 at> echo "this is test" > /root/test.txt //将内容输出到 /root/test.txt at> <EOT> //ctrl+D job 5 at 2011-11-21 13:55 [root@redhat root]# cat /root/test.txt this is test [root@redhat root]# at 1:00 2011-11-22 //在2011-11-22 1:00自动关闭系统 at> /sbin/shutdown -h now //自动关闭系统 at> <EOT> job 6 at 2011-11-22 01:00 [root@redhat root]# cd /var/spool/at //进到at目录下 [root@redhat at]# ls a0000101502a34 a0000201502a37 a0000301502a37 a0000601502cdc spool [root@redhat at]# cat a0000601502cdc ………… /sbin/shutdown -h now [root@redhat at]# atq //查询系统有多少个正在等待被执行的任务 1 2011-11-21 13:40 a root 2 2011-11-21 13:43 a root 3 2011-11-21 13:43 a root 6 2011-11-22 01:00 a root [root@redhat at]# at now +5 min at> echo "test" > /dev/tty2 at> <EOT> job 7 at 2011-11-21 14:16 [root@redhat at]# atq 1 2011-11-21 13:40 a root 2 2011-11-21 13:43 a root 3 2011-11-21 13:43 a root 6 2011-11-22 01:00 a root 7 2011-11-21 14:16 a root [root@redhat at]# atrm 3 //删除工作号为3的任务 [root@redhat at]# You have new mail in /var/spool/mail/root [root@redhat at]# mail …… & 8 Message 8: From root@localhost.localdomain Mon Nov 21 14:20:00 2011 Date: Mon, 21 Nov 2011 14:20:00 +0800 From: root <root@localhost.localdomain> Subject: Output from your job 8 To: root@localhost.localdomain
hi luowei [root@redhat at]# batch //用于创建大批量的任务 warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at> echo "hi" > /dev/tty2 at> <EOT> job 9 at 2011-11-21 14:28
at命令的使用控制 at命令的使用控制文件 /etc/at.allow /etc/at.deny
基于用户的使用控制
at命令的控制流程 例: [root@redhat at]# vi /etc/at.deny test jack ~ [root@redhat at]# su - jack [jack@redhat jack]$ at You do not have permission to use at. [jack@redhat jack]$
|