linux脚本中延时执行命令,linux系统中的调度延迟任务:at 命令

linux系统中的调度延迟任务:at 命令

主要概念

at命令可以使命令稍后运行

batch命令可以让命令在机器负载较低的情况下运行

可以直接进入命令,或者以脚本形式提交命令

作业中的标准输出用邮件发送给用户

atq命令和atrm命令用来查看和删除当前的计划任务

linux的守护进程是那些在后台运行的进程,脱离控制终端,执行通常成键盘输入无关的任务.守护进程经常与

网络服务相关联,例如网页服务器(httpd)或ftp服务器(vsftpd).其他守护进程处理系统任务,例如日志守护进程(

syslogd)和电源管理守护进程(apmd).这个主要解释说明两个守护进程:一个允许用户延迟任务(atd);另一个允许

用户在固定间隔时间运行命令(crond).

守护进程像其他任何进程一样,通常作为系统启动序列的一部分被启动,或者由根用户启动.因此,除非你特意寻找

它们,否则可能一直不知道它们的存在.

[root@sidatabase /]# ps aux | grep crond

root      3204  0.0  0.0 117204  1368 ?        Ss   Aug09   0:11 crond

root     21399  0.0  0.0 103244   868 pts/0    S+   14:07   0:00 grep crond

[root@sidatabase /]# ps aux | grep atd

rpcuser   2800  0.0  0.0  23340  1204 ?        Ss   Aug09   0:00 rpc.statd

root      3215  0.0  0.0  21448   464 ?        Ss   Aug09   0:00 /usr/sbin/atd

root     21405  0.0  0.0 103244   872 pts/0    S+   14:07   0:00 grep atd

有些守护进程作为根用户运行,而有些守护进程为了安全起见,则以一个系统用户的身份运行.在上面,crond守护进程

作为根用户运行,而ntpd守护进程则作为系统用户运行,如下所示.

[root@sidatabase /]# ps aux | grep ntpd

root     26538  0.0  0.0 103240   868 ?        14:22   0:00 ntpd -u ntp:ntp -p

atd守护进程

atd守护进程允许用户提交稍后运行的作业,如"at 14:13 ".atd守护进程必须在运行时才能使用,用户可以通过查看

运行的进程列表来确定atd是否在运行.

root@sidatabase /]# ps aux | grep atd

rpcuser   2800  0.0  0.0  23340  1204 ?        Ss   Aug09   0:00 rpc.statd

root      3215  0.0  0.0  21448   548 ?        Ss   Aug09   0:00 /usr/sbin/atd

root     28604  0.0  0.0 103244   872 pts/0    S+   14:24   0:00 grep atd

在上面的输出中第七列指出了与进程相关联的终端.对用户root的grep命令而言,终端是pts/2,这可甬指的网络shell

或X会话中的图形终端.注意,atd守护进程没有相关联的终端.守护进程的一个定义特征是,它结束与启动它的终端之

间的联系.

用at命令提交作业

at命令用来向atd守护进程提交需要在特定时间运行的作业.要运行的命令可以作为脚本提交(用-f命令行选项),也可以

通过标准输入直接输入.命令的标准输出将用电子邮件的形式寄给用户

at [[-f filename] | [-m]] time

规定一天中的时间可以用HH:MM格式,后面附加"am"或"pm",也可以用"midnight","noon"和"teatime"待词语.日期也可以

用好几种格式规定,其中mm/dd/yy

例如要在14:13这个时间生成一个名叫at.txt的文件并在文件中写入"hello I am JingYong"信息

[root@sidatabase /]# echo "hello I am JingYong " > at.txt | at 14:13

job 1 at 2013-08-23 14:13

查看作业

[root@sidatabase /]# atq

1       2013-08-23 14:13 a root

删除作业

[root@sidatabase /]# atrm 1

用batch延迟任务

batch命令与at命令一样,用来延迟任务.与at命令不同的是,batch命令不在特定时间运行,而是等到系统不忙于别的

任务时运行.如果提交作业时机器不繁忙,可以立即运行作业.batch守护进程会监控系统的平均负载(load average)

等待它降到0.8以下,然后开始运行作业任务.

batch命令的语法与at命令的语法一模一样,可以用标准输入规定作业,也可以用-f命令行选项把作业作为batch文件

来提交.如果规定了时间,batch会延迟到指定的时间开始观察机器,那时,atd将开始监控系统的平均负载,并且在系统

不繁忙时运行作业.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值