如何在 Linux 上使用 at 安排一次性作业
cron 命令是在 Linux 上安排重复任务的绝佳方法。但是,如果您只想运行特定命令或脚本一次怎么办?
时间管理是一门很难掌握的艺术。幸运的是,借助技术,您可以将日常任务自动化并委托给计算机。与人类不同,电脑非常擅长在精确的设定时间运行重复性任务。
在 Linux 上,您可以使用 cron 等工具运行重复任务。此外,您还可以使用 at 命令安排和运行一次性任务。
在 Linux 上安装
at 命令不是大多数发行版上标准 Linux 实用程序的一部分。幸运的是,无论您使用什么发行版,您都可以使用包管理器轻松安装它。
在基于 Debian 的系统(例如 Ubuntu、MX Linux 和 Pop!_OS)上,您可以通过运行以下命令进行安装:
sudo apt install at
如果您使用基于 RPM 的发行版(例如 RHEL、Fedora 或 Rocky Linux),请使用 DNF 安装软件包:
sudo dnf install at
在基于 Arch 的 Linux 发行版(例如 Manjaro)上,运行:
sudo pacman -S at
启动 atd 作业调度程序服务
使用 at 命令之前,请确保 atd 调度守护进程正在运行。这就是 at 命令用来执行计划作业的内容。
sudo systemctl status atd
如果 atd 服务未运行,您可以使用以下命令启动它:
sudo systemctl start atd
在 Linux 上使用 at 调度任务
以下是如何使用 at 安排在将来某个给定时间执行的一次性作业:
command | at time_stamp
例如,我们可以安排一个任务,使用 ls 命令列出当前目录的内容,并在一分钟后将输出写入文件。
首先,使用 cd 命令更改到您的用户主文件夹:
cd ~
然后,执行以下命令来安排您的任务:
ls > list_items.txt | at now + 1 minutes
输出将表明您的任务已安排。经过一段时间后,您可以列出目录的内容,并且应该会出现一个包含目录内容的新文本文件。
如果你想在明天中午执行该命令,请运行:
ls > list_items.txt | at noon tomorrow
对于更具体的时间和日期,请使用日期格式 MMDDHHMM YYYY。例如,在下午 1 点执行上述命令。 2023 年 12 月 25 日,您可以运行以下命令:
ls > list_items.txt | at 12251300 2023
at 命令具有许多更高级的功能,允许您在精确的时间运行特定命令。查看其手册页以获取更多命令选项:
man at
在 Linux 上使用 at 调度脚本
除了运行单个命令之外,您还可以使用 at 命令安排脚本在指定时间执行。
假设您的主文件夹中有一个名为 disk_usage.sh 的脚本。该脚本只是将硬盘使用情况打印到文本文件中。这是脚本:
#!/bin/bash
df -h > disk_usage.txt
要从现在起三十分钟后执行此脚本,您只需运行以下命令:
at now + 30 minutes -f ~/disk_usage.sh
通过为脚本指定适当的模式,确保脚本可执行。为此,您可以使用 chmod 命令:
sudo chmod +x disk_usage.sh
在 Linux 上管理待处理任务
您可以使用以下命令查看待处理的任务:
atq
要删除待处理任务,请使用以下命令格式:
atrm task_number
例如,要删除 12 号任务,请使用:
atrm 12
使用 at 自动执行 Linux 上的重复任务
at 命令是一种功能强大且多功能的工具,用于在 Linux PC 上执行或运行一次性作业。除了 at 之外,您还可以使用 crontab 来自动执行各种任务,从简单到复杂的作业。