热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux使用at命令拨号,Linux中的at命令

at是一个命令行程序,可让您安排在特定时间执行的命令。用at创建的作业仅执行一次。在本文中,我们将说明如何使用at及其配套程序batch,

at是一个命令行程序,可让您安排在特定时间执行的命令。 用at创建的作业仅执行一次。

在本文中,我们将说明如何使用at及其配套程序batch,atq,atrm查看,删除和创建要在以后执行的作业。

安装at

取决于发行版,at可能会或不会出现在您的Linux系统上。

如果未安装at,则可以使用发行版的软件包管理器轻松安装它。

在Ubuntu和Debian上安装atsudo apt update

sudo apt install at

在CentOS和Fedora上安装atsudo yum install at

一旦安装了程序,请确保atd已启动调度守护程序,并将其设置为在启动时启动:sudo systemctl enable --now atd

如何使用at命令

at命令的简化语法如下:at [OPTION...] runtime

当您要执行作业时,at命令将日期和时间(runtime)作为命令行参数,并从标准输入中执行命令。

让我们创建一个将在上午9:00执行的工作:at 09:00

按下Enter后,系统会显示at命令提示符,通常以at>开头。 您还会看到一条警告,告知您将在其中运行命令的shell:warning: commands will be executed using /bin/sh

at>

输入您要执行的一个或多个命令:tar -xf /home/myfreax/file.tar.gz

完成输入命令后,请按Ctrl-D退出提示并保存作业:at>

job 4 at Tue May 5 09:00:00 2020

该命令将显示作业编号以及执行时间和日期。

除了在at提示符下输入命令外,还有其他方式可以传递您要运行的命令。 一种方法是使用echo并将命令传递给at:echo "command_to_be_run" | at 09:00

另一个选择是使用heredoc文档&#xff1a;at 09:00 <

要从文件而不是标准输入中读取命令&#xff0c;请在文件路径之后使用-f选项调用命令。 例如&#xff0c;要创建将运行脚本/home/myfreax/script.sh的作业&#xff1a;at 09:00 -f /home/myfreax/script.sh

默认情况下&#xff0c;如果命令产生输出&#xff0c;则at将在作业完成后向用户发送一封包含输出的电子邮件。 使用-M选项调用at以禁止显示电子邮件通知&#xff1a;at 09:00 -M

即使没有输出&#xff0c;也可以使用-m发送电子邮件&#xff1a;at 09:00 -m

batch命令

batch或其别名at -b在系统负载级别允许时调度作业并在批处理队列中执行它们。 默认情况下&#xff0c;作业在系统平均负载低于1.5时执行。 可以在调用atd守护程序时指定负载的值。 如果系统平均负载高于指定的平均负载&#xff0c;则作业将在队列中等待。

要使用batch创建作业&#xff0c;请传递您要执行的命令&#xff1a;echo "command_to_be_run" | batch

指定执行时间

at程序接受各种时间规格。 您可以指定时间&#xff0c;日期和从当前时间开始的增量&#xff1a;

Time-指定时间&#xff0c;请使用HH:MM或HHMM形式。 若要指示12小时制&#xff0c;请在时间后使用am或pm。 您还可以使用now&#xff0c;midnight&#xff0c;noon或teatime(16:00)之类的字符串。 如果过了指定的时间&#xff0c;则作业将在第二天执行。

Date-at命令允许您将作业安排在指定的日期。 可以使用月份名称&#xff0c;日期和可选的年份来指定日期。 您可以使用字符串&#xff0c;例如today&#xff0c;tomorrow或工作日。 日期也可以使用MMDD[CC]YY&#xff0c;MM/DD/[CC]YY&#xff0c;DD.MM.[CC]YY或[CC]YY-MM-DD格式表示。

增量-at也接受以now &#43; count time-unit格式递增&#xff0c;其中count是数字&#xff0c;time-unit可以是以下字符串之一&#xff1a;minutes&#xff0c;hours&#xff0c;days或weeks。

时间&#xff0c;日期和增量可以组合&#xff0c;以下是一些示例&#xff0c;安排下一个星期日的工作&#xff0c;时间比当前时间晚十分钟&#xff1a;at sunday &#43;10 minutes

从现在起两天下午1点运行作业&#xff1a;at 1pm &#43; 2 days

安排在2020年10月21日12:30运行的作业&#xff1a;at 12:30 102120

安排从现在开始一小时的作业&#xff1a;at now &#43;1 hours

您也可以使用-t选项在[[CC]YY]MMDDhhmm[.ss]中指定时间和日期。 这是一个例子&#xff1a;at -t 202005111321.32

指定队列

默认情况下&#xff0c;使用at创建的作业安排在名为a的队列中&#xff0c;使用batch创建的作业安排在b队列中。

查询的名称可以从a到z&#xff0c;从A到Z。 字母较低的队列的优先级较低&#xff0c;这意味着它们优先于字母较高的队列。

您可以使用-q选项指定队列。 例如&#xff0c;要在L队列中设置作业&#xff0c;应运行&#xff1a;at monday &#43;2 hours -q L

列出待处理的作业

要列出用户的待处理作业&#xff0c;请运行atq或at -l命令&#xff1a;atq

输出将列出所有作业&#xff0c;每行列出一个。 每行包括作业编号&#xff0c;日期&#xff0c;时间&#xff0c;队列字母和用户名。9 Tue May 5 12:22:00 2020 a myfreax

12Wed Oct 21 12:30:00 2020 a myfreax

15Tue May 5 09:00:00 2020 a myfreax

6 Tue May 5 09:00:00 2020 a myfreax

13Mon May 4 23:08:00 2020 a myfreax

11Wed Jul 1 10:00:00 2020 a myfreax

4 Tue May 5 09:00:00 2020 a myfreax

当以管理用户身份调用atq时&#xff0c;它将列出所有用户的待处理作业。

删除待处理的作业

要删除待处理的作业&#xff0c;请调用atrm或at -r命令&#xff0c;后跟作业号。 例如&#xff0c;要删除编号为9的作业&#xff0c;应运行&#xff1a;atrm 9

限制用户

/etc/at.deny和/etc/at.allow文件使您可以控制哪些用户可以使用at或batch命令创建作业。 这些文件由用户名列表组成&#xff0c;每行一个用户名。

默认情况下&#xff0c;仅/etc/at.deny 文件存在&#xff0c;并且为空&#xff0c;这意味着所有用户都可以使用at命令。 如果您要拒绝对特定用户的许可&#xff0c;请将用户名添加到此文件中。

如果/etc/at.allow文件存在&#xff0c;则仅此文件中列出的用户可以使用at命令。

如果两个文件都不存在&#xff0c;则只有具有管理特权的用户才能使用at命令。

结论

at命令从标准输入读取命令&#xff0c;并在以后执行它们。 与crontab不同&#xff0c;使用at创建的作业仅执行一次。

有关终端中at命令类型man at的所有可用选项的更多信息。

如果您有任何疑问&#xff0c;请随时发表评论。



推荐阅读
author-avatar
黄晓敏3023
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有