如何在 Linux 中使用 at 命令在指定时间或稍后时间执行任务
作为cron 作业调度程序的替代方案,该at
命令允许您安排命令在给定时间运行一次,而无需编辑配置文件。
唯一的要求包括安装此实用程序以及启动并允许其执行:
# yum install at [on CentOS based systems] $ sudo apt-get install at [on Debian and derivatives]
接下来,在启动时启动并启用 at 服务。
--------- On SystemD --------- # systemctl start atd # systemctl enable atd --------- On SysVinit --------- # service atd start # chkconfig --level 35 atd on
一旦atd
运行,您可以按如下方式安排任何命令或任务。我们希望在下一分钟开始时发送4 个ping 探测(例如,如果是22:20:13,则命令将在22:21:00执行)并通过电子邮件(需要Postfix或同等软件)向调用命令的用户报告结果:www.google.com
-m
# echo "ping -c 4 www.google.com" | at -m now + 1 minute
如果您选择不使用该-m
选项,则将执行命令,但不会将任何内容打印到标准输出。但是,您可以选择将输出重定向到文件。
此外,请注意,at
不仅允许以下固定时间:现在、中午 (12:00) 和午夜 (00:00),还允许自定义 2 位数字(代表小时)和 4 位数字时间(小时和分钟)。
例如,
updatedb
要在今天晚上 11 点运行(如果当前日期晚于晚上 11 点,则在明天运行),请执行以下操作:
# echo "updatedb" | at -m 23
在今天23:55关闭系统(适用与上例相同的标准):
# echo "shutdown -h now" | at -m 23:55
+
您还可以使用符号和所需的时间规范将执行延迟几分钟、几小时、几天、几周、几个月或几年,如第一个示例所示。
时间规范遵循POSIX 标准。
概括
根据经验,当您只想在明确定义的时间运行一次命令或执行给定任务时,请使用 at 而不是cron 作业调度程序。对于其他情况,请使用cron。
接下来,我们将介绍如何使用 openssl 加密 tar 存档文件,在此之前请保持与示例的连接。