首页 > 编程知识 正文

串口at指令使用方法,linux定时执行命令

时间:2023-05-03 10:57:10 阅读:39222 作者:3222

at是一个命令行程序,可以安排在特定时间运行的命令。 at创建的作业只运行一次。

本文介绍如何使用at及其相关程序batch、atq和atrm查看、删除和创建稍后运行的作业。

安装自动取款机

根据版本的不同,at可能在Linux系统上显示,也可能不显示。

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

在Ubuntu和Debian上安装辅助更新

sudo apt安装at

在CentOS和Fedora上安装at sudo yum安装at

安装程序后,请确保atd已启动计划守护程序,并将其配置为在启动时启动。 sudo系统启用--now ATD

使用at命令

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

运行作业时,at命令使用“日期和时间”(runtime )作为命令行参数,从标准输入运行命令。

创建上午9:00点执行的工作吧。 at 09:00

按Enter键可显示at命令提示符。 通常以ATM开头。 此外,执行命令的shell“warning : commandswillbeexecutedusing/bin/sh”会显示警告

at

输入要执行的一个或多个命令。 tar-xf/home/myf reax/file.tar.gz

输入命令后,按ctrl > d退出提示并保存您所做的工作。 at

job4attuemay 5093360003360002020

命令显示作业编号和运行日期和时间。

除了在at提示符下输入命令外,还可以传递要执行的命令。 一种方法是使用echo将命令传递给ATM。 echo ' command _ to _ be _ run '|at 09336000

另一个选择是使用heredoc文档。 at 09:00

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

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

没有输出也可以使用-m发送电子邮件: at 09:00 -m

批处理命令

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

要使用batch创建作业,请传递要执行的命令。 echo 'command_to_be_run' | batch

指定执行时间

at计划接受各种时间规格。 可以指定时间、日期和相对于当前时间的增量。

时间-要指定时间,请使用HH:MM或HHMM格式。 要指示12小时制,请在时间后使用am或pm。 也可以使用now、midnight、noon、teatime(16:00 )等字符串。 指定时间过后,作业将在第二天运行。

可以使用Date-at命令将作业调度到指定的日期。 可以使用月份的名称、日期和可选年份指定日期。 可以使用today、tomorrow、工作日等字符串。 日期也可以用MMDD[CC]YY、MM/DD/[CC]YY、DD.MM.[CC]YY或[CC]YY-MM-DD格式表示。

增量-at也接受以now count time-unit格式递增。 其中count是数字,time-unit是minutes、hours、days或weeks字符串。

可以组合时间、日期和增量。 下面的示例将下一个星期天的工作安排得比当前时间晚10分钟。 at sunday 10 minutes

从现在开始在2日下午1点执行工作: at 1pm 2 days

计划于2020年10月21日在12:30上运行的工作: at 12:30 102120

从现在开始安排一个小时的作业: at now 1 hours

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

指定队列

默认情况下,使用at创建的作业位于名为a的队列中,而使用batch创建的作业位于b队列中。

查询的名称从a到z,从a到z。 字符低的队列具有低优先级,因此优先于字符高的队列。

可以使用-q选项指定队列。 例如,要在l队列中设置作业,请运行at monday 2

hours -q L

列出待处理的作业

要列出用户的待处理作业,请运行atq或at -l命令:atq

输出将列出所有作业,每行列出一个。 每行包括作业编号,日期,时间,队列字母和用户名。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时,它将列出所有用户的待处理作业。

删除待处理的作业

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

限制用户

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

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

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

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

结论

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

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

如果您有任何疑问,请随时发表评论。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。