文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档> at 和 batch

at 和 batch

时间:2006-07-07  来源:zqy2000zqy

1. http://redhat.winet.cn/s1-autotasks-at-batch.php

37.2. at 和 batch

cron 被用来调度重复的任务,at 命令被用来在指定时间内调度一次性的任务。batch 命令被用来在系统平均载量降到 0.8 以下时执行一次性的任务。

要使用 at 或 batch 命令,你必须安装了 at RPM 软件包,并且 atd 服务必须在运行。要判定该软件包是否被安装了,使用 rpm -q at 命令。要判定该服务是否在运行,使用 /sbin/service atd status 命令。

37.2.1. 配置 at 作业

要在某一指定时间内调度一项一次性作业,键入 at time 命令。这里的 time 是执行命令的时间。

time 参数可以是下面格式中任何一种:

  • HH:MM 格式 — 譬如,04:00 代表 4:00AM。如果时间已过,它就会在第二天的这一时间执行。

  • midnight — 代表 12:00AM。

  • noon — 代表 12:00PM。

  • teatime — 代表 4:00PM。

  • 英文月名 日期 年份 格式— 譬如,January 15 2002 代表 2002 年 1 月 15 日。年份可有可无。

  • MMDDYY、MM/DD/YY、或 MM.DD.YY 格式 — 譬如,011502 代表 2002 年 1 月 15 日。

  • now + 时间 — 时间以 minutes、hours、days、或 weeks 为单位。譬如,now + 5 days 代表命令应该在 5 天之后的此时此刻执行。

时间必须要被先指定,接着是可有可无的日期。关于时间格式的详情,请阅读 /usr/share/doc/at-<version> /timespec 文本文件。

键入了 at 命令和它的时间参数后,at> 提示就会出现。键入要执行的命令,按 [Enter] 键,然后键入 Ctrl-D。你可以指定多条命令, 方法是键入每一条命令后按 [Enter] 键。键入所有命令后,按 [Enter] 键转入一个空行,然后再键入 Ctrl-D。或者,你也可以在提示后输入 shell 脚本,在脚本的每一行后按 [Enter] 键,然后在空行处键入 Ctrl-D 来退出。如果输入的是脚本,所用的 shell 就会是用户的 SHELL 环境变量中设置的值,用户的登录 shell,或是 /bin/sh(使用最先发现的)。

如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子邮件方式被邮寄给用户。

使用命令 atq 来查看等待运行的作业。详情请参阅第 37.2.3 节。

at 命令的用法能够被制约。详情请参阅 第 37.2.5 节。

37.2.2. 配置 batch 作业

要在系统平均载量降到 0.8 以下时执行某项一次性的任务,使用 batch 命令。

键入 batch 命令后,at> 提示就会出现。键入要执行的命令,按 [Enter] 键,然后键入 Ctrl-D。你可以指定多条命令,方法是键入每一条命令后按 [Enter] 键。键入所有命令后,按 [Enter] 键转入一个空行,然后再键入 Ctrl-D。或者, 你也可以在提示后输入 shell 脚本,在脚本的每一行后按 [Enter] 键,然后 在空行处键入 Ctrl-D 来退出。如果输入的是脚本,所用的 shell 就会是用户的 SHELL 环境变量中设置的值,用户的登录 shell,或是 /bin/sh(使用最先发现的)。系统平均载量一降到 0.8 以下,这组命令或脚本就会被执行。

如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子邮件方式被邮寄给用户。

使用命令 atq 来查看等待运行的作业。详情请参阅第 37.2.3 节。

batch 命令的用法能够被制约。详情请参阅第 37.2.5 节。

37.2.3. 查看等待运行的作业

要查看等待运行的 at 和 batch 作业,使用 atq 命令。它显示一列等待运行的作业,每项作业只占据一行。每一行的格式都是:作业号码、日期、小时、作业类别、以及用户名。用户只能查看他们自己的作业。如果根用户执行 atq 命令,所有用户的全部作业都会被显示。

37.2.4. 其它的命令行选项

at 和 batch 的其它命令行选项包括:

选项 描述
-f 从文件中读取命令或 shell 脚本,而非在提示后指定它们。
-m 在作业完成后,给用户发送电子邮件。
-v 显示作业将被执行的时间。

表 37-1. at 和 batch 的命令行选项

37.2.5. 控制对 at 和 batch 的使用

/etc/at.allow 和 /etc/at.deny 文件可以用来限制对 at 和 batch 命令的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许使用空白字符。如果使用控制文件被修改了,at 守护进程(atd) 不必被重启。每次用户试图执行 at 或 batch 命令时,使用控制文件都会被读取。

不论使用控制文件如何规定,根用户都总是可以执行 at 和 batch 命令。

如果 at.allow 文件存在,只有其中列出的用户才能使用 at 或 batch 命令,at.deny 文件会被忽略。

如果 at.allow 文件不存在,所有在 at.deny 文件中列出的用户都被禁止使用 at 和 batch 命令。

37.2.6. 启动和停止服务

要启动 at 服务,使用 /sbin/service atd start 命令。要停止该服务, 使用 /sbin/service atd stop 命令。建议你在引导时启动该服务。关于在引导时自动启动 at 服务的详情,请参阅第21章 。

 

2

http://www.it055.com/it055_infos/server/server_system/3637_page1.htm

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

 

当批命令完成后,输出结果将会以电子邮件的方式送到我的信箱

相关阅读 更多 +
排行榜 更多 +
PvZ戴夫的时空冒险重置

PvZ戴夫的时空冒险重置

策略塔防 下载
PVZTV雪版阳光加50

PVZTV雪版阳光加50

策略塔防 下载
双刃战士雪姐

双刃战士雪姐

冒险解谜 下载