1.at命令
1.1 Linux at命令介绍
Linux中我们有类似于闹钟的需求。如我们需要在凌晨1点将文件上传到服务器,或者在晚上10点确定系统状态等,但管理员需要下班休息,且需要人工操作,效率太低。
at命令就是为此需求而生。at命令,可以在特定时间自动完成设定的任务,也可以实现自动化,方便快捷。
1.2 at安装
一般情况下,Linux都已经安装了at命令,可使用at -V查看,若没有版本返回就需要安装。
yum install at -y
还需要启动at守护进程,称为atd。启动命令:
systemctl start atd
#再开始自动启动
systemctl enable --now atd
1.3 at命令基本用法
语法 at [选项] [日期时间]
选项:
-f:指定包含具体指令的任务文件
-q:指定新任务的队列名称
-l:显示待执行任务的列表
-d:删除指定的待执行任务
-m:任务执行完成后向用户发送E-mail
参数:
日期时间:指定任务执行的日期时间
1.4 使用at命令交互性安排任务
我们平时使用闹钟,先点击加号添加新闹钟,再设定时间,最后再在备注里填入闹钟的目的。使用at命令交互式安排任务也是一样的道理。
首先输入at命令,然后再跟上具体时间。回车后进入到交互性界面,再输入具体要做的事情(命令),最后以结束输入,任务就设置好了。
例:早上11:20时候,在attest.txt文档里写入hello Linux这句话:
at 11:20 AM
at> echo "hello linux" > ~/attest.txt
at> <EOT>#使用Ctrl+d提交
job 1 at Sat May 13 11:20:00 2023
1.5 使用at命令安排任务
如果你不想用交互的方式来给at命令安排任务,可以使用管道将echo或printf的值传递给at命令。
如,从现在开始1分钟后向attest.txt文件写入hello world语句:
echo "echo 'hello world' >> ~/attest.txt" | at now +1 minute
1.6 时间表达式
at 命令使用的是我们日常生活中使用的时间格式。
YYMMDDhhmm[.ss] (缩写年、月、日、小时、分钟[秒])
CCYYMMDDhhmm[.ss] (完整年、月、日、小时、分钟、和[秒])
now
midnight(深夜)
noon(中午)
teatime(下午4点)
AM
PM
用户还可采用12小时计时制,即在时间后面加上AM或PM。也能够指定命令执行的具体日期,格式为month day或mm/dd/yy或dd.mm.yy指定日期必须跟在指定时间后面。
相对时间:添加一个+号使它相对于现在。
minute
hours
days
weeks
months
years
格式:now + count time-unites
相对时间计时法对于安排接下来不久就要执行的命令很友好。
at命令表达式实例:
echo "rsync -av /home/tux me@myserver:/home/tux/" | at 3:30 AM tomorrow
echo "/opt/batch.sh ~/Pictures" | at 3:30 AM 08/01/2023
echo "echo hello" | at now + 3 days
1.7 使用实例
1.三天后的下午5点执行/bin/ls
[root@localhost ~]# at 5:00 PM+3days
at> /bin/ls
2.明天17点20,输出时间到指定文件内
# at 17:20 tomorrow
at> date >/root/2023.log<EOT>
job 5 at Mon May 15 17:20:00 2023
1.8 查看at任务队列
at命令队列设置了太多任务容易忘,我们可以用atq进行查看
# atq
4 Wed May 17 17:00:00 2023 a root
5 Mon May 15 17:20:00 2023 a root
atrm 任务号 对任务进行删除
使用at -c 任务号 查看设置的任务内容