shell后台执行指令At

【shell】后台执行命令-002(at)

      at命令允许用户向cron守护进程提交作业,使其在稍后的时间运行。这里稍后的时间可能是指10min以后,也可能是指几天以后。如果你希望在一个月或更长的时间以后运行,最好还是使用crontab文件。

      一旦一个作业被提交, at命令将会保留所有当前的环境变量,包括路径,不象crontab,只提供缺省的环境。该作业的所有输出都将以电子邮件的形式发送给用户,除非你对其输出进行了重定向,绝大多数情况下是重定向到某个文件中。

     crontab一样,根用户可以通过/etc目录下的at.allowat.deny文件来控制哪些用户可以使用at命令,哪些用户不行。不过一般来说,对at命令的使用不如对crontab的使用限制那么严格。

     at命令的基本形式为:

     at [-f script] [-m -l -r] [time] [date]

其中,

-fscript    是所要提交的脚本或命令。

-l             列出当前所有等待运行的作业。a t q命令具有相同的作用。

-r            清除作业。为了清除某个作业,还要提供相应的作业标识(ID);有些UNIX变体只接受atrm作为清除命令。

-m           作业完成后给用户发邮件。

time         at命令的时间格式非常灵活;可以是HHH . HHMMHH : MMH: M,其中HM分别是小时和分钟。还可以使用a.m.p.m.

date        日期格式可以是月份数或日期数,而且at命令还能够识别诸如todaytomorrow这样的词。

     现在就让我们来看看如何提交作业。

1、 使用at命令提交命令或脚本

     使用at命令提交作业有几种不同的形式,可以通过命令行方式,也可以使用at命令提示符。

    一般来说在提交若干行的系统命令时,我使用at命令提示符方式,而在提交shell脚本时,使用命令行方式。

     如果你想提交若干行的命令,可以在at命令后面跟上日期/时间并回车。然后就进入了at命令提示符,这时只需逐条输入相应的命令,然后按‘< CTRL-D>’退出。下面给出一个例子:

          

 

其中,<EOT>就是<CTRL-D>。在21:10系统将执行一个简单的find命令。你应当已经注意到,我所提交的作业被分配了一个唯一标识job 1。该命令在完成以后会将全部结果以邮件的形式发送给我。

      下面就是我从这个邮件中截取的一部分:

            

 

       下面这些日期/时间格式都是at命令可以接受的:

          

       如果希望向at命令提交一个shell脚本,使用其命令行方式即可。在提交脚本时使用- f选项。

            

 

       在上面的例子中,一个叫做db_table.的脚本将在明天下午3 : 0 0运行。

还可以使用echo命令向at命令提交作业:

$ echo find /etc-name "passwd" -print | at now +1 minute

2、列出所提交的作业

     一个作业被提交后,可以使用at -l命令来列出所有的作业:

     

 

其中,第一行是作业标识,后面是作业运行的日期/时间。最后一列a代表at。还可以使用atq命令来完成同样的功能,它是at命令的一个链接。当提交一个作业后,它就被拷贝到/var/spool/at目录中,准备在要求的时间运行。

        

 

3 、清除一个作业

      清除作业的命令格式为:

        atrm [job no] at -r [job no]

       要清除某个作业,首先要执行at -l命令,以获取相应的作业标识,然后对该作业标识使用at -r 命令,清除该作业。

         

 

有些系统使用at-r [jobno]命令清除作业。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值