at命令是一次性定时计划任务执行
要想使用 at 命令,读者需提前安装好 at 软件包,并开启 atd 服务。
如何检查系统开启atd服务?很简单,通过如下命令即可:
如下表示atd进程处在运行状态:
┌──(root㉿kali)-[~/Desktop]
└─# ps -ef | grep atd
daemon 10928 1 0 10:22 ? 00:00:00 /usr/sbin/atd -f
root 12948 8215 0 10:25 pts/1 00:00:00 grep --color=auto atd
at命令每隔60秒检查一次系统中的job任务,如果有待执行的任务,则执行它,这个任务是一次性执行的,不会反复执行
at 命令的格式非常简单,基本格式如下:
[root@localhost ~] # at [选项] [时间]
接下来介绍一下有关此命令常用的几个选项及各自含义:*
选项 | 介绍 |
---|---|
-m | 当 at 工作完成后,无论命令是否输出,都用 E-mail 通知执行 at 命令的用户 |
-c | 工作标识号 显示该 at 工作的实际内容 |
-t | 时间 在指定时间提交工作并执行,时间格式为 [[CC]YY]MMDDhhmm |
-d | 删除某个工作,需要提供相应的工作标识号(ID),同 atrm 命令的作用相同 |
-l | 列出当前所有等待运行的工作,和 atq 命令具有相同的额作用 |
-f | 脚本文件 指定所要提交的脚本文件 |
at 命令时间参数可用格式:
格式 | 用法 |
---|---|
HH:MM | 比如 04:00 AM。如果时间已过,则它会在第二天的同一时间执行 |
Midnight | 代表 12:00 AM(也就是 00:00) |
Noon | 代表 12:00 PM(相当于 12:00) |
Teatime | 代表 4:00 PM(相当于 16:00) |
指定具体日期 | 例如:04:00 2021-12-1 |
相对计时法,now+时间 | 以 minutes、hours、days 或 weeks 为单位,例如 now+5 days 表示命令在 5 天之后的此时此刻执行 |
2分钟后,输出时间到指定的文件内:
输入命令如下:
┌──(root💀kali)-[~]
└─# at now + 2 minutes 1 ⨯
warning: commands will be executed using /bin/sh
at Wed Sep 21 05:36:00 2022
at> date > dahe/temp/index.txt
接着需要按住Ctrl +D
退出at指令,保存任务到job队列中
可以使用atq命令查看当前待执行的job队列:
┌──(root💀kali)-[~]
└─# atq
1 Wed Sep 21 05:36:00 2022 a root
等待两分钟后,进入指定的目录,可以看到,定时任务已经成功执行啦!
┌──(root💀kali)-[~/dahe/temp]
└─# cat index.txt
Wed Sep 21 05:36:00 AM EDT 2022
如果想要删除已经设置的定时任务,使用atrm指令即可,例如:
┌──(root💀kali)-[~]
└─# atq
2 Wed Sep 21 05:49:00 2022 a root
┌──(root💀kali)-[~]
└─# atrm 2
┌──(root💀kali)-[~]
└─# atq