Linux at命令在指定时刻执行指定的命令序列

运维 系统运维
用户使用linux at命令在指定时刻执行指定的命令序列。也就是说,该命令至少需要指定一个命令、一个执行时间才能够正常运行

用户使用Linux at命令在指定时刻执行指定的命令序列。也就是说,该命令至少需要指定一个命令、一个执行时间才能够正常运行。Linux at命令能够只指定时间,也能够时间和日期一起指定。需要注意的是,指定时间有个系统判别问题。

比如说:用户现在指定了一个执行时间:凌晨3:20,而发出Linux at命令的时间是头天晚上的20:00,那么究竟是在哪一天执行该命令呢?假如用户在3:20以前仍然在工作,那么该命令将在这个时候完成;假如用户3:20以前就退出了工作状态,那么该命令将在第二天凌晨才得到执行。下面是Linux at命令的语法格式:
at [-V] [-q 队列] [-f 文档名] [-mldbv] 时间
at -c 作业 [作业...]
at允许使用一套相当复杂的指定时间的方法,实际上是将POSIX.2标准扩展了。他能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。

上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。下面通过一些例子来说明具体用法。

[例2] 指定在今天下午5:30执行某命令。假设现在时间是中午12:30,1999年2月24日,其命令格式如下:
at 5:30pm
at 17:30
at 17:30 today
at now + 5 hours
at now + 300 minutes
at 17:30 24.2.99
at 17:30 2/24/99
at 17:30 Feb 24

以上这些命令表达的意义是完全相同的,所以在安排时间的时候完***够根据个人喜好和具体情况自由选择。一般采用绝对时间的24小时计时法能够避免由于用户自己的疏忽造成计时错误的情况发生,例如上例能够写成:
at 17:30 2/24/99
这样很清楚,而且别人也看得懂。
对于Linux at命令来说,需要定时执行的命令是从标准输入或使用-f选项指定的文档中读取并执行的。假如Linux at命令是从一个使用su命令转换到用户shell中执行的,那么当前用户被认为是执行用户,任何的错误和输出结果都会送给这个用户。但是假如有邮件送出的话,收到邮件的将是原来的用户,也就是登录时shell的任何者。

[例3]
$ at -f work 4pm + 3 days
在三天后下午4点执行文档work中的作业。
$ at -f work 10am Jul 31
在7月31日上午10点执行文档work中的作业。在任何情况下,***用户都能够使用这个命令。对于其他用户来说,是否能够使用就取决于两个文档:/etc/at.allow和/etc/at.deny。假如/etc/at.allow文档存在的话,那么只有在其中列出的用户才能够使用Linux at命令;假如该文档不存在,那么将检查/etc/at.deny文档是否存在,在这个文档中列出的用户均不能使用该命令。假如两个文档都不存在,那么只有***用户能够使用该命令;空的/etc/at.deny文档意味着所有的用户都能够使用该命令,这也是默认状态。
#p#
下面对命令中的参数进行说明。
-V 将标准版本号打印到标准错误中。
-q queue 使用指定的队列。队列名称是由单个字母组成,合法的队列名能够由a-z或A-Z。a队列是Linux at命令的默认队列。
-m 作业结束后发送邮件给执行Linux at命令的用户。
-f file 使用该选项将使命令从指定的file读取,而不是从标准输入读取。
-l atq命令的一个别名。该命令用于查看安排的作业序列,他将列出用户排在队列中的作业,假如是***用户,则列出队列中的任何工作。

命令的语法格式如下:
atq [-V] [-q 队列] [-v]
-d atrm 命令的一个别名。该命令用于删除指定要执行的命令序列,语法格式如下:
atrm [-V] 作业 [作业...]
-c 将命令行上所列的作业送到标准输出。

[例4] 找出系统中任何以txt为后缀名的文档,并且进行打印。打印结束后给用户foxy发出邮件通知取件。指定时间为十二月二十五日凌晨两点。
首先键入:
$ at 2:00 12/25/99
然后系统出现at>提示符,等待用户输入进一步的信息,也就是需要执行的命令序列:
at> find / -name "*.txt"|lpr
at> echo "foxy:All texts have been printed.You can take them over.Good day!River" |mail -s "job done" foxy
输入完每一行指令然后回车,任何指令序列输入完毕后,使用组合键结束Linux at命令的输入。这时候屏幕将出现如下信息:
warning:command will be executed using /bin/sh.
job 1 at 1999-12-25 02:00
提醒用户将使用哪个shell来执行该命令序列。实际上假如命令序列较长或经常被执行的时候,一般都采用将该序列写到一个文档中,然后将文档作为Linux at命令的输入来处理。这样不容易出错。

[例5] 上面的例子能够修改如下:
将命令序列写入到文档/tmp/printjob,语句为:
$ at -f /tmp/printjob 2:00 12/25/99
这样一来,Linux at命令将使用文档中的命令序列,屏幕显示如下:
Warning:command will be executed using /bin/sh.
job 2 at 1999-12-25 02:00
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
可以将这个服务在系统启动的时候也自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start

以上是Linux at命令的使用案例。

【编辑推荐】

  1. 戴尔:Linux ATI驱动程序很不理想 必须改进
  2. Linux ATI 7-11(8.43.2)显卡驱动的安装
  3. linux at命令详解及使用方式案例
  4. Linux操作系统中用Linux at命令定时发送邮件
  5. linux中的cron和linux at命令用法详解

 

责任编辑:chenqingxiang 来源: DIY部落
相关推荐

2009-08-03 12:02:13

linux at命令linux at命令详使用案例

2012-05-08 11:11:43

Linuxcrontab命令

2009-08-03 12:09:42

linux at命令linux at命令详batch

2010-07-15 14:54:51

at命令crontab定时执行任务

2009-08-03 12:26:00

Linux at命令linux at命令详Win2000

2023-03-17 08:28:28

Golang切换目录

2009-08-03 12:21:03

linux at命令linux at命令详定时关机

2023-12-13 18:44:02

Linux定时任务操作系统

2010-06-22 13:23:18

Linux at命令详

2009-08-03 11:38:57

linux at命令详linux at命令

2010-06-22 13:08:42

Linux At命令

2023-12-26 01:19:50

Linux网络诊断

2020-11-06 07:42:01

Linux命令脚本

2019-11-26 08:40:16

LinuxSSHSFTP

2009-08-03 12:15:29

linux at命令linux at命令详定时启动程序

2022-11-18 08:55:33

2018-01-18 10:57:48

Linux服务器命令

2022-11-02 08:20:43

Linux

2015-12-14 14:26:56

Linux命令pv

2017-12-11 09:34:40

Linux启动或重启命令与脚本
点赞
收藏

51CTO技术栈公众号