在 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 文件夹下创建一个包含"下班啦!"的文件,可以这样做:

  1. 输入命令并指定时间:

    at now + 10 minutes
    
  2. 此时会进入 at 的编辑模式,输入要执行的命令:

    echo "下班啦!" > /tmp/reminder.txt
    
  3. 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

注意事项

  1. at 只适合一次性任务,如果需要每天/每周重复执行,记得用 cron
  2. 任务中的命令最好用绝对路径(比如 /usr/bin/echo 而不是 echo),避免因环境变量问题导致执行失败。
  3. 测试任务时可以先安排一个几分钟后执行的简单命令(比如创建文件),确认没问题再安排重要任务。

总结

at 命令就像一个"一次性闹钟",让 Linux 系统在你指定的时间自动完成任务。无论是简单的提醒还是复杂的系统操作,它都能轻松应对。记住几个关键命令:

  • at 时间:安排任务
  • atq:查看任务
  • atrm 任务ID:删除任务

下次需要让电脑"稍后做事"时,不妨试试 at 命令,体验 Linux 自动化的便捷吧!