在 Linux 系统中,我们经常需要安排一些任务在特定时间执行。比如半夜自动备份文件、定时发送提醒,或者在你离开电脑后运行一个耗时的脚本。今天要介绍的 at
命令,就是专门用来处理这类一次性任务的利器。
什么是 at 命令?
at
命令是 Linux 系统中的定时任务工具,和我们熟知的 cron
不同:
cron
用于重复执行的任务(比如每天凌晨备份)at
则专注于只执行一次的任务(比如明天下午 3 点运行一个脚本)
简单说,如果你需要让电脑"未来某个时间干一件事,干完就完事",选 at
准没错。
第一步:安装 at 命令
大多数 Linux 系统默认已经安装了 at
,但如果你的系统没有,可以用下面的命令安装:
-
Debian/Ubuntu 系统(比如 Ubuntu、Linux Mint):
sudo apt install at
-
Red Hat 系系统(比如 CentOS、Fedora):
sudo dnf install at
安装完成后,就可以开始使用啦!
基础用法:给未来的电脑安排任务
at
命令的用法很简单,基本格式是:
at [OPTIONS] <DATETIME>
先学会说"时间"
at
支持多种时间格式,小白也能轻松上手:
-
相对时间(从现在开始算):
now + 1 hour
(1 小时后)now + 30 minutes
(30 分钟后)now + 2 days
(2 天后)
-
绝对时间(具体几点几分):
3:30 PM
(下午 3 点 30 分)18:00
(晚上 6 点)
-
带日期的时间:
10:00 tomorrow
(明天上午 10 点)2024-12-31 23:59
(2024 年 12 月 31 日 23 点 59 分)9:00 next Monday
(下周一上午 9 点)
实战:安排第一个任务
比如我们想让电脑10分钟后在 /tmp
文件夹下创建一个包含"下班啦!"的文件,可以这样做:
-
输入命令并指定时间:
at now + 10 minutes
-
此时会进入
at
的编辑模式,输入要执行的命令:echo "下班啦!" > /tmp/reminder.txt
-
按
Ctrl + D
保存退出(先按 Ctrl 键不放,再按 D 键)。
系统会显示类似 job 1 at 2024-08-19 16:30
的提示,说明任务已安排好(1 是任务 ID,后面是执行时间)。
10 分钟后,去 /tmp
文件夹看看,是不是多了一个 reminder.txt
文件?
更简单的方式:一行命令搞定
如果觉得进入编辑模式麻烦,也可以用管道符 |
直接输入任务:
echo "echo '下班啦!' > /tmp/reminder.txt" | at now + 10 minutes
效果和上面完全一样!
管理你的定时任务
安排好任务后,我们还需要学会查看和取消任务。
查看已安排的任务
用 atq
命令可以列出当前用户所有的定时任务:
atq
输出会类似这样:
1 2024-08-19 16:30 a 用户名
其中第一个数字就是任务 ID(比如这里的 1)。
取消不需要的任务
如果想删除某个定时任务,用 atrm
命令加上任务 ID 即可:
atrm 1 # 删除 ID 为 1 的任务
实用技巧:让任务更听话
任务完成后发邮件提醒
加上 -m
选项,任务执行完成后会给当前用户发邮件提醒:
at -m 10:00 tomorrow
> backup_script.sh # 执行备份脚本
> Ctrl + D
从文件中读取任务命令
如果任务命令很长,可以先写到文件里,用 -f
选项让 at
读取:
# 先创建一个包含命令的文件
echo "echo '自动备份完成' >> /var/log/backup.log" > task.txt# 让 at 执行文件中的命令
at -f task.txt now + 1 hour
注意事项
at
只适合一次性任务,如果需要每天/每周重复执行,记得用cron
。- 任务中的命令最好用绝对路径(比如
/usr/bin/echo
而不是echo
),避免因环境变量问题导致执行失败。 - 测试任务时可以先安排一个几分钟后执行的简单命令(比如创建文件),确认没问题再安排重要任务。
总结
at
命令就像一个"一次性闹钟",让 Linux 系统在你指定的时间自动完成任务。无论是简单的提醒还是复杂的系统操作,它都能轻松应对。记住几个关键命令:
at 时间
:安排任务atq
:查看任务atrm 任务ID
:删除任务
下次需要让电脑"稍后做事"时,不妨试试 at
命令,体验 Linux 自动化的便捷吧!