您的位置:首页 > 运维架构 > Linux

Linux怎样在某一特定时间执行命令(使用at”和“batch”)

2007-06-10 23:34 671 查看
at命令可以让你指定特定的日期和时间来运行某个程序。举个例子,我可以在每天早上七点钟开始在我的CDROM上播放音乐:

at 7:00
cdplay <CTRL><D>

在以上例子,我在命令行里输入 “at 7:00”接着按回车。接着,at命令显示一个 “at> ”的提示符,然后我输入 “cdplay”接着按回车,最后,我同时按住<CTRL>和<D>结束输入。如果我接着按回车,另外一个“at> ”提示符出现,我可以接着输入那些我希望在早上7点钟运行的程序。然后在最后输入<CTRL><D>。<CTRL><D>就象是向当前的输入送一个文件结束符合,告诉输入已经完毕。不要连续按<CTRL><D>两次,否则你就自动退出系统了。

你可以使用以下命令列出当前在任务调度表里的任务:

at –l

你可以看到那些还在任务调度表里还在等待的程序的清单。

如果你改变主意,绝对把某个程序从任务调度表里删除。举例:

atrm 8

该命令将从任务调度表里删除命令编号为8的程序
我也可以安排一个程序在稍晚一点的时间运行,比如:

at 23:55 12/31/00
startx

该命令将在新千年夜晚启动我的X-Windows系统(2000年12月31日,午夜前5分钟)。

如果你不能运行at命令,查看一下是否任务调度服务程序(atd)已经被加载(可以使用root用户运行ntsysv加载)。如果at命令对root用户有效但是对于普通用户无效,检查一下是否文件/etc/at.deny是否存在,同时,确认文件/etc/at.allow不存在。这是所有用户可以运行at命令的缺省设置。如果你想要只有指定的用户才能够运行at命令,可以生成文件/etc/at.allow并且把用户的名单加到文件里。

对于at命令其他的可选项,运行

man at

当系统载荷很低的时候,如果你希望在后台运行一个“处理器饥渴型”的任务,你可以选择使用batch命令。举例,我可以运行setiathome(一个数据分析程序用来帮助寻找外部智能生命,SETI):

batch
at>setiathome <CTRL><D>

在以上例子里,我在命令行输入batch然后回车,在“at>”命令提示符下,我输入想要在后台运行的程序名称。程序试图立刻运行,但是其实会等到系统载荷小于0.8的时候才会开始运行。你可以通过检查虚拟文件/proc/loadavg来检查系统载荷:

cat /proc/loadavg

当批命令完成后,输出结果将会以电子邮件的方式送到我的信箱
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: