开发手册 欢迎您!
软件开发者资料库

Linux batch 命令

Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux batch 命令。

1、命令简介

batch命令的用法和at相似,batch命令只不过它不用指定任务执行的时间,而是在系统空闲时自动执行指定的任务。

2、命令用法

at [-V] [-q queue] [-f file] [-mldbv] TIME
at [-V] [-q queue] [-f file] [-mldbv] -t time_arg
at -c job [job...]
atq [-V] [-q queue]
atrm [-V] job [job...]
batch [-V] [-q queue] [-f file] [-mv] [TIME]

3、命令描述

at 和 batch 从标准输入或指定文件中读取稍后要执行的命令。

选项描述
at在指定的时间执行命令。
atq列出用户挂起的作业,除非用户是超级用户;那样的话,每个人的工作都列出来了。输出行(每个作业对应一行)的格式为:作业编号、日期、时间、作业类别。
atrm删除由作业编号标识的作业。
batch在系统负载水平允许时执行命令;换句话说,当平均负载下降到0.8以下,或调用atrun时指定的值。

at允许相当复杂的时间规范,扩展了POSIX.2标准。它接受HH:MM形式的时间,以在一天中的特定时间运行作业。(如果那个时间已经过去,则假定是第二天。),也可以指定midnight, noon或teatime(下午4点),可以在一天中加上AM或PM来表示在早上或晚上跑步。还可以通过在表单month-name day中提供日期和可选的年份,或者在表单MMDDYYMM/DD/YYDD.MM.YY中提供日期,说明作业将在哪一天运行。日期的说明必须遵循时间的说明。还可以给出像now + count这样的时间单位,其中时间单位可以是分钟、小时、天或周,可以告诉at通过将时间后缀为today来运行今天的作业,并通过将时间后缀为tomorrow来运行明天的作业。

例如,从现在起3天内下午4点运行一项工作,你将在下午4点+ 3天内运行一项工作,在7月31日上午10点运行一项工作,你将在7月31日上午10点运行一项工作,你将在明天凌晨1点运行一项工作,你将在明天凌晨1点运行。

时间规范的确切定义可以在/usr/share/doc/at-3.1.8/timespec中找到。

对于at和batch,从标准输入或使用-f选项指定的文件中读取命令并执行。工作目录、环境(除了变量TERM、DISPLAY和_)和掩码从调用时起就被保留。从su(1) shell调用的at或批处理命令将保留当前用户id。用户将收到来自命令的标准错误和标准输出(如果有的话)。邮件将使用命令/usr/sbin/sendmail发送。如果从su(1) shell执行at,登录shell的所有者将收到邮件。

超级用户可以在任何情况下使用这些命令。对于其他用户,使用at的权限由/etc/at.allow文件决定。允许和/etc/at.deny.

如果文件/etc/at.allow存在,只有其中提到的用户名被允许使用at

如果/etc/at.allow不存在,检查/etc/at.deny,然后允许它中没有提到的每个用户名使用at

如果两者都不存在,则只允许超级用户使用at

一个空的/etc/at.deny意味着允许每个用户使用这些命令,这是默认配置。

可以通过/etc/sysconfig/atd配置文件配置at守护进程,该文件包含一些设置示例。

4、命令选项

选项描述
-V将版本号打印到标准错误。
-q queue使用指定的队列。
队列名称由单个字母组成;
有效的队列指定范围从a到z和a到z。
a队列是at和b队列的默认值。
字母越高的队列越美观。
特殊的队列“=”是为当前正在运行的作业保留的。
如果一个作业被提交到一个用大写字母指定的队列中,
它将被视为当时已经提交给批处理。
如果atq给定了一个特定的队列,
它将只显示该队列中挂起的作业。
-m当作业完成时,即使没有输出,也向用户发送邮件。
-f file从文件而不是标准输入中读取作业。
-l是atq的别名。
-d是atrm的别名。
-v显示作业执行的时间。

除非设置了环境变量POSIXLY_CORRECT,否则显示的时间将以“1997-02-20 14:50”的格式显示;然后,它将是“Thu Feb 20 14:50:00 1997”。

选项

描述

-c将命令行中列出的作业输出到标准输出。

-t time_arg

 

在time_arg选项参数指定的时间提交要运行的作业,

该参数必须具有与touch(1)

实用程序的-t time

选项参数([[CC]YY]MMDDhhmm)指定的格式相同。

5、使用示例

[root@kvm1 ~]# batch
at> ls -al > ~/1.txt
at>
job 3 at Thu Nov 25 20:48:00 2021

注意:按Ctrl + D 退出编辑执行。