Linux中的at命令有什么用?
参考回答
at
命令用于在指定时间执行一次性任务,类似于 cron
,但 cron
适用于周期性任务,而 at
只运行一次。例如:
- 这会在当天的 14:30 运行
echo 'Hello, World!'
。
或者:
然后在 at>
提示符下输入要执行的命令:
任务会在明天下午 2 点执行。
详细讲解与拓展
1. at
命令的基本格式
TIME
可以是具体时间(如14:30
)、相对时间(如now + 2 hours
)、自然语言时间(如tomorrow
)。
2. at
命令的时间格式
时间格式 | 说明 |
---|---|
14:30 |
当天 14:30 执行任务 |
now + 30 minutes |
30 分钟后执行任务 |
now + 1 hour |
1 小时后执行任务 |
now + 2 days |
2 天后执行任务 |
tomorrow |
明天的这个时候执行任务 |
next Friday |
下周五执行任务 |
12:00 AM |
当天午夜执行任务 |
midnight |
午夜 00:00 执行任务 |
noon |
中午 12:00 执行任务 |
示例:
3. 查看和管理 at
任务
查看已排队任务
示例输出:
1 2024-01-30 14:30 a user
2 2024-01-30 16:00 a user
表示有两个 at
任务,分别在 14:30 和 16:00 运行。
删除 at
任务
使用 atrm
(删除 at
任务),任务 ID 由 atq
获取:
4. 运行 at
任务时的环境
at
任务运行时不会继承当前 shell 的环境变量,而是使用 atd
进程的环境。因此:
– 变量可能不会生效:
“`bash
VAR="Hello" && echo 'echo ParseError: KaTeX parse error: Expected 'EOF', got '#' at position 27: …ow + 1 minute #̲ 不会正确输出
“`
…VAR’ | at now + 1 minute
“`
- 使用绝对路径避免路径问题:
5. batch
命令:负载低时运行任务
batch
类似于 at
,但它会等系统负载低(默认 0.8 以下)时执行任务:
适用于后台批量任务,如备份、日志清理等。
总结
at
用于一次性定时任务,而cron
适用于周期性任务。at TIME
设定任务,支持多种时间格式。atq
查看任务,atrm
删除任务。batch
用于系统负载低时执行任务。
at
适合临时定时任务,比如计划重启、定时备份、提醒操作等,是 cron
的好搭档。