写点什么

Linux 之 at 命令

作者:入门小站
  • 2022 年 2 月 17 日
  • 本文字数:1638 字

    阅读完需:约 5 分钟

【Linux 常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。


当使用 shell 脚本时,你可能想在某个特定的时间运行 shell 脚本,Linux 系统中提供了多个在特定时间运行 shell 脚本的方法,其中一种方法就是使用 at 命令。


at 命令允许指定 Linux 系统何时运行脚本,at 命令会将作业提交到队列中,指定 shell 何时运行该作业。at 的守护进程 atd 会以后台模式运行,检查作业队列来运行作业。atd 守护进程会检查系统上的一个特殊目录来获取 at 命令的提交的作业。默认情况下,atd 守护进程每 60 秒检查一次目录。有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。


at 允许使用一套相当复杂的指定时间的方法。它能够接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午 4 点)等比较模糊的 词语来指定时间。用户还能够采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。


上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:now + count time-units,now 就是当前时间,time-units 是时间单位,这里能够是 minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间。

需要安装此命令

Centos


> yum -y install at> systemctl start atd> systemctl enable atd
复制代码


Ubuntu


> sudo apt-get install at -y
复制代码

命令格式

at [参数] [时间]

命令功能

在一个指定的时间执行一个指定任务,只能执行一次

命令参数

  • -m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出

  • -I atq 的别名

  • -d atrm 的别名

  • -v 显示任务将被执行的时间

  • -c 打印任务的内容到标准输出

  • -V 显示版本信息

  • -q<列队> 使用指定的列队

  • -f<文件> 从指定文件读入任务而不是从标准输入读入

  • -t<时间参数> 以时间参数的形式提交要运行的任务

其它命令

  • atq 查看所有任务

  • atrm 删除一个任务


at 允许使用一套相当复杂的指定时间的方法。他能够接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午 4 点)等比较模糊的 词语来指定时间。用户还能够采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。 上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:now + count time-units ,now 就是当前时间,time-units 是时间单位,这里能够是 minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间。

三天后的下午 4 点执行 /bin/ls

at 4pm+ 3daysat> /bin/lsat> <EOT>job 5 at Tue Mar 16 16:00:00 2021
复制代码


<EOT>按ctrl+d

明天 10 点钟,输出时间到指定文件内

> at 10:00 tomorrowat> date > /tmp/a.logat> <EOT>job 6 at Sun Mar 14 10:00:00 2021
复制代码


<EOT>按ctrl+d

查看 at 的任务列表

> atq5       Tue Mar 16 16:00:00 2021 a root6       Sun Mar 14 10:00:00 2021 a root
复制代码

显示已经设置的任务内容

> at -c 5#!/bin/sh/bin/ls
复制代码

删除已经设置的任务

> atrm 5
复制代码


原文链接:https://rumenz.com/rumenbiji/linux-at.html微信公众号:入门小站


【Linux 常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。



发布于: 刚刚阅读数: 2
用户头像

入门小站

关注

还未添加个人签名 2020.01.18 加入

还未添加个人简介

评论

发布
暂无评论
Linux之at命令