Linux定时任务<at>

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> #使用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
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 任务号 查看设置的任务内容

 

你可能感兴趣的:(linux,运维,服务器)