详述Linux后台运行命令(二)

系统 Linux
Linux后台运行命令前面我们介绍了cron和crontab命令,这里继续介绍另一个Linux后台运行命令at,同样会详细分析具体用法。

Linux后台运行命令第二讲,这里介绍at命令,这个命令与cron有一定的关系,这里还会详细介绍at命令的使用方法。我们应该对Linux后台运行命令加以比较分析,可以看出at与cron和crontab命令的区别。

at

a t命令允许用户向c r o n守护进程提交作业,使其在稍后的时间运行。一旦一个作业被提交, a t命令将会保留所有当前的环境变量,包括路径,不象c r o n t a b,只提供缺省的环境。该作业的所有输出都将以电子邮件的形式发送给用户,除非你对其输出进行了重定向,绝大多数情况下是重定向到某个文件中。
和c r o n t a b一样,根用户可以通过/ e t c目录下的a t . a l l o w和a t . d e n y文件来控制哪些用户可以使用a t命令,哪些用户不行。不过一般来说,对a t命令的使用不如对c r o n t a b的使用限制那么严格。

a t命令的基本形式为:

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

其中,
-f:script 是所要提交的脚本或命令。
-l:列出当前所有等待运行的作业。a t q命令具有相同的作用。
-r:清除作业。为了清除某个作业,还要提供相应的作业标识( I D);有些U N I X变体只接受a t r m作为清除命令。
-m:作业完成后给用户发邮件。
time:at命令的时间格式非常灵活;可以是H、H H . H H M M、H H : M M或H : M,其中H和M分别是小时和分钟。还可以使用a . m .或p . m .。
date:日期格式可以是月份数或日期数,而且a t命令还能够识别诸如t o d a y、t o m o r r o w这样的词。

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

使用a t命令提交作业有几种不同的形式,可以通过命令行方式,也可以使用a t命令提示符。一般来说在提交若干行的系统命令时,使用a t命令提示符方式,在提交s h e l l脚本时,使用命令行方式。

提示符方式:

以在a t命令后面跟上日期/时间并回车。然后就进入了a t命令提示符,这时只需逐条输入相应的命令,然后按‘ < C T R L - D >’退出。

命令行方式:

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

例一:提示符方式

# su sam
$ at 10:40
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> find /etc -name "passwd" -print
at> <EOT>
job 1 at 2004-11-02 10:40

其中, < E O T >就是< C T R L - D >。在10:40系统将执行一个简单的f i n d命令。提交的作业被分配了一个唯一标识job 1。该命令在完成以后会将全部结果以邮件的形式发送给我。

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

at 5.00am May23
at 11.20pm
at now +2 hour
at 9am tomorrow
at 15:00 May24
at now + 10 minutes

例二:命令行方式
如果希望向a t命令提交一个s h e l l脚本,使用其命令行方式即可。在提交脚本时使用- f选项。
如:

$ touch db_table.sh
$ at 3:00pm tomorrow -f db_table.sh
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
job 3 at 2004-11-02 15:00

在上面的例子中,一个叫做d b _ t a b l e . s h的脚本将在2004-11-02 15:00运行。

还可以使用e c h o命令向a t命令提交作业:

$ echo find /etc -name "passwd" -print | at now +1 minute
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
job 4 at 2004-11-01 19:07

列出所提交的作业

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

$ at -l
1       2004-11-02 10:40 a sam
3       2004-11-02 15:00 a sam
4       2004-11-01 19:07 a sam

其中,第一行是作业标识,后面是作业运行的日期/时间。最后一列a代表a t。
还可以使用a t q命令来完成同样的功能,它是a t命令的一个链接。
直接>atq,相当于>at -l

当提交一个作业后,它就被拷贝到/ v a r / s p o o l / a t目录中,准备在要求的时间运行。

# pwd
/var/spool/at
# ls -l

清除一个作业

清除作业的命令格式为:

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

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

$ at -l
1       2004-11-02 10:40 a sam
3       2004-11-02 15:00 a sam
4       2004-11-01 19:07 a sam
$at -r 3
$at -l
1       2004-11-02 10:40 a sam
4       2004-11-01 19:07 a sam

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

Linux后台运行命令at就介绍到这里。

【编辑推荐】

  1. 详述Linux后台运行命令(一)
  2. 关于Linux内核安全入侵侦察系统的使用问题
  3. 全面解析Linux profile文件
  4. 详细剖析Linux进程调度时机
  5. 详细剖析Linux防火墙配置
责任编辑:小霞 来源: 互联网
相关推荐

2010-03-09 08:54:29

Linux后台运行命令

2010-03-08 18:18:38

Linux后台运行命令

2010-03-09 09:40:02

Linux后台运行命令

2010-03-08 17:53:36

Linux后台运行命令

2021-06-10 09:56:09

Linux命令shell

2010-03-04 10:44:04

Linux ftp命令

2022-11-09 11:01:11

Linux命令后台

2016-11-02 09:49:21

Linux命令进程

2010-03-05 16:11:57

Linux配置静态IP

2017-03-17 16:10:24

linux进程后台

2010-03-04 17:06:58

Linux救援模式

2009-12-23 16:46:24

Linux命令运行

2019-01-02 12:24:21

Linux后台运行

2017-03-15 19:54:05

Linux进程后台

2022-01-10 09:05:32

Linux后台命令

2010-03-09 12:50:56

Linux用户账号管理

2010-09-28 16:36:49

Linux DHCP服

2010-03-09 14:59:02

Linux ifcon

2010-03-05 16:44:52

Linux终端命令

2010-03-18 16:06:19

Linux命令
点赞
收藏

51CTO技术栈公众号