@
at定时任务简介
生活中,我们有太多场景需要使用到闹钟,比如早上 7 点起床,下午 4 点开会,晚上 8 点购物,等等。在 Linux 系统里,我们同样也有类似的需求。比如我们想在凌晨 1 点将文件上传服务器,或者在晚上 10 点确认系统状态等。但我们不可能一直守在电脑前,进行这种重复性操作。
at
命令就是为这个需求而诞生的。使用 at
命令,可以在用户指定的一个未来的时间来执行一次性任务,而无需手动执行。
at
命令是 Linux 和 Unix 系统中的一个用于计划一次性任务的命令
at命令安装
[root@server ~]# dnf install at -y
[root@server ~]# at -V # 大写V-查看版本
at服务启动
[root@server ~]# systemctl start atd #启动守护进程
[root@server ~]# systemctl enable --now atd # 设置开机启动
[root@server ~]# systemctl status atd # 查看状态
at命令基础解析
格式
at -参数 日期时间
参数
-m:当任务完成后,即使没有标准输出,也会给用户发送邮件
-l:列出系统上所有用户的at任务,等价于atq
-d:删除或取消一个任务
-v:使用时间格式,列出at任务
-c:可以列出任务之后的命令内容
-f:从文件中读取
参数示例(待添加详细示例)
-m:完成任务后发送邮件通知
echo "backup.sh" | at -m 15:00
系统将在下午3点执行 backup.sh,任务完成后即使没有标准输出,系统也会发送邮件通知用户。
-l:列出系统上所有用户的 at 任务
at -l
该命令列出所有当前系统中的 at 任务,等同于 atq。
-d:删除或取消一个任务
at -d 3
这个命令删除任务编号为 3 的 at 任务。也可以使用 atrm 来实现相同功能。
-v:使用时间格式列出 at 任务
at -v
这个命令使用时间格式列出所有 at 任务,让你能看到任务预定执行的具体时间。
-c:列出任务之后的命令内容
at -c 3
这个命令列出任务编号为 3 的命令内容,即该任务将要执行的具体指令。
-f:从文件中读取命令
at -f script.sh 20:00
该命令将在晚上8点执行 script.sh 文件中的命令。
时间格式
参数 | 说明 |
---|---|
HH:MM (AM/PM) | 小时:分钟(最近的相应时间,即当天已过,则第二天执行)(默认以24小时制执行,在末尾添加AM/PM可转换为12小时制) |
HH:MM YYYY-MM-DD | 小时:分钟 年/月/日(在具体的某年某月的某一天的特殊时刻执行该工作) |
now + n units | 相对记时法:now:当前时间,n:数字,units(单位):(minutes、hours、days、weeks) |
next | 相对记时法的另一种表达方式 |
at注意事项
- at命令只要指定的时间正确,就可以执行对应的命令
- at命令的输出结果不会显示到屏幕上
- at命令中执行的命令最好使用绝对路径,不容易报错
- 过程:输入at 时间 -> 回车 ->输入执行的命令->ctrl+d退出at
- at命令只会执行一次
at访问控制
at命令执行过程分析
- 第一步:寻找/etc/at.allow (白名单)是否存在,写在该文件中用户才可执行at命令
- 第二步:若/etc/at.allow不存在,则寻找/etc/at.deny(黑名单)文件,写在该文件中的用户不能使用at命令
- 第三步:若两个文件都不存在则只有root用户可以使用at命令
- 注意:若拒绝某用户使用at命令则可以将用户名写入到/etc/at.deny中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗