写点什么

Linux 之 at 命令

用户头像
入门小站
关注
发布于: 47 分钟前

当使用 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

微信公众号:入门小站

发布于: 47 分钟前阅读数: 3
用户头像

入门小站

关注

还未添加个人签名 2020.01.18 加入

还未添加个人简介

评论

发布
暂无评论
Linux之at命令