at
命令用于在指定时间执行一次性任务。这个命令也是需要独立安装的:apt install at
它的兄弟crontab
用于执行周期性任务。
一、创建任务
这个命令是比较灵活的:
第一行写时间,第二行写任务,第三行按下
Ctrl+D
结束输入at 10:30 PM at> echo "Hello, world!" > output.txt at> Ctrl+D
你也可以在一行中完成
$ echo "ls -l" > output.txt | at now + 1 hour warning: commands will be executed using /bin/sh job 1 at Wed Sep 11 17:05:00 2024
任务还可以是脚本
at 3pm tomorrow < script.sh
最准确是是指定一个绝对时间
at 10:00 2024-04-07 < script.sh
二、查看任务
使用atq
或at -l
查看当前计划任务列表
$ at -l
1 Wed Sep 11 17:05:00 2024 a root
2 Wed Sep 11 17:10:00 2024 a root
查看任务内容:使用at -c 任务序号
命令,输出的最底部就是任务的内容。输出不太友好。
三、取消任务
先查看任务列表,再使用atrm
或者at -r
命令可以取消一个计划任务。例如,要取消任务编号为1的任务:
atrm 1
四、守护进程
atd
● atd.service - Deferred execution scheduler
Loaded: loaded (/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-07-31 09:05:04 CST; 1 month 11 days ago
Docs: man:atd(8)
Main PID: 1072 (atd)
Tasks: 1 (limit: 9283)
Memory: 284.0K
CPU: 169ms
CGroup: /system.slice/atd.service
└─1072 /usr/sbin/atd -f
五、配置文件
默认:所有用户都可以使用at命令
/etc/at.allow
明确指出可以使用at命令的用户:
zhangsan
lisi
wangwu
/etc/at.deny
明确指出不可以使用at命令的用户:
zhaoliu
六、详细选项
at 选项 时间
-
-m
: 当任务完成时,发送邮件给用户。如果不想发送邮件,可以在命令后面加上>/dev/null 2>&1
,将输出重定向到/dev/null
。 -
-f <file>
: 指定一个包含要执行命令的文件。 -
-l
: 列出当前用户的所有at
任务。 -
-d <job>
: 删除指定的at
任务。 -
-r <job>
: 删除指定的at
任务,与-d
参数相同。 -
-q <queue>
: 指定任务的优先级队列。数字越小,优先级越高。 -
-v <job>
: 显示指定at
任务的详细信息。 -
-c <job>
: 显示指定at
任务的命令。 -
-t <time>
: 指定任务的执行时间,格式为HH:MM
。 -
-d
: 删除所有当前用户的at
任务。
短命令
- atq: 等效
at -q
命令。 - atrm: 等效
at -r
命令。 - batch: 在系统资源较为空闲时执行一组任务。
本文共 431 个字数,平均阅读时长 ≈ 2分钟
评论 (0)