文件读取的linux命令,linux at命令和batch从输入或指定文件读取命令

linux

at命令和batch从输入或指定文件读取命令

linux at命令和 batch 从标准输入或一个指定的文件读取命令,这些命令在以后某个时间用 /bin/sh 执行。

linux at命令允许相当复杂的时间指定,他扩展了 POSIX.2 标准。

他接受 HH:MM 的时间式样,用来指定在一天的某个时间运行一个作业。 (如果时间已过了则假定为第二天。)

你能指定 midnight (午夜)、 noon (中午) 或 teatime (下午4点),你能用 AM 或 PM

后缀指定一天的上午或下午。

你能给出 month-name day 加上可选的年份的式样用来指定运行linux at命令的日期,或给出 MMDDYY 、

MM/DD/YY 或 DD.MM.YY 式样用来指定运行linux at命令的日期。日期的指定必须跟在时间指定的后面。你也能给出象

now + 计数 时间单位 的式样,这里的时间单位能是 minutes 、 hours 、 days 或 weeks,你能给时间加一个

today 后缀来指定linux at命令今天运行作业,能给时间加一个 tomorrow 后缀来指定linux at命令

明天运行作业。

例如,

要在三天以后的下午 4 点运行一个作业,linux at命令时间参数能指定为 4pm + 3 days。

要在7月31日上午10:00运行一个作业, linux at命令时间参数能指定为 10am Jul 31,

要在明天上午1点运行一个作业,linux at命令时间参数能指定为 1am tomorrow。

使用linux at命令定期运行程式 , 2005-12-28 18:16:50 by Johnny

使用linux at命令定期运行程式

1. 使用cron运行任务

cron任务的缺点是计划要经常运行,如果我们只是想要让特定任务运行一次呢?

那么,这时候就要用到at监视程式了。

设置linux at命令非常简单,指示定运行的时间,那么就会在哪个时候运行。linux

at命令类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行他。

linux at命令相当于另一个shell,运行at time命令时,他发送一个个命令,能输入任意命令或程式。

at now + time命令能在指示任务。

假设处理一个大型数据库,要在别人不用系统时去处理数据,比如凌晨2点5分。那么我们就应该先建立/home/mj/airplane脚本管理数据库,计划处理/home/mj/air-safe文件中的结果。正常方式是这样启动下列命令:

# at 2:05 tomorrow

at> /home/mj/airplane >

/home/mj/air-safe

at> Ctrl+D

AT Time中的时间表示方法

时间 例子 说明

Minute at now + 5 minutes 任务在5分钟后运行

Hour at now + 1 hour 任务在1小时后运行

Days at now + 3 days 任务在3天后运行

Weeks at now + 2 weeks 任务在两周后运行

Fixed at midnight 任务在午夜运行

Fixed at 10:30pm 任务在晚上10点30分开始

Fixed at 1:00 12/20/04 任务在2004年12月20日凌晨1点开始

2. 查看目前在等待执行的任务

输入任务后,能使用atq命令能看到目前等待执行的任务,输出提供了任务号、用户和任务执行时间等信息。

# atq8 2004-12-15 02:05 a mj

里面的a表示是at任务还是batch命令生成的任务。

3. 删除linux at命令任务

删除一个linux at命令任务比较简单,使用atrm命令就能轻松解决。

比如我知道了任务的队列号,那么就能删除他:

# atrm 8

就删除了队列号为8的at任务了。

at -l 列表

at -r 移除

at命令:定时运行命令

作用:at命令在指定时刻执行指定的命令序列。

格式:

at [-V] [-q x] [-f file] [-m] time

atq [-V] [-q x]

atrm [-V] [-q x] job…

batch [-V] [-f file] [-m]

主要选项如下。

— -V:显示作业将被执行的时间。

— -q:选用q参数则可选队列名称,队列名称可以是a~z和A~Z之间的任意字母。队列字母顺序越高则队列优先级别越低。

— -f:从文件中读取命令或shell脚本,而非在提示后指定它们。

— -m:执行完作业后发送电子邮件到用户。

— time:设定作业执行的时间。time参数可以是下面格式中的任何一种。

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

midnight代表12:00AM。noon代表12:00PM。teatime代表4:00PM。

? 英文月名日期年份格式——如January 15

2005,代表2005年1月15日。年份可无。

? MMDDYY、MM/DD/YY或MM.DD.YY格式——如011505,代表2005年1月15日。

? now +时间格式——时间以minutes、hours、days或weeks为单位。如now

+ 5

days,代表命令应该在5天之后的此时此刻执行。偏移量的格式为时间+偏移量,单位是minutes、hours和days。

说明:at命令实际上是一组命令集合。at命令在指定时刻执行指定的命令序列。atq查询已经设定的命令序列。atrm删除已经设定的命令序列。batch当系统负载低于一个设定值(0.8),执行设定的命令序列。

应用实例如下。

(1)让系统在两天后的17:30执行文件data中指定的作业,使用命令:

#at -f data 15:30 +2 days

(2)配置batch作业

要在系统平均载量降到0.8以下时执行某项一次性的任务,使用batch命令。键入batch命令后,“at>”提示就会出现。键入要执行的命令,按“Enter”键,然后键入“Ctrl-D”。你可以指定多条命令,方法是键入每一条命令后按“Enter”键。键入所有命令后,按“Enter”键转入一个空行,然后再键入“Ctrl-D”。或者你也可以在提示后输入shell脚本,在脚本的每一行后按“Enter”键,然后在空行处键入“Ctrl-D”来退出。系统平均载量一降到0.8以下,这组命令或脚本就会被执行。如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子邮件方式被邮寄给用户。

(3)进阶应用:控制对at和batch的使用

通过/etc/at.allow和/etc

/at.deny文件可以用来限制对at和batch命令的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许使用空白字符。如果控制文件被修改了,at守护进程不必被重启。每次用户试图执行at或batch命令时,使用控制文件都会被读取。不论控制文件如何规定,超级权限用户总是可以执行at和batch命令。如果at.allow文件存在,只有其中列出的用户才能使用at或batch命令,at.deny文件会被忽略。如果

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值