• Linux-定时任务at命令


    太多场景需要使用定时任务,在特定时间执行一次,自动完成设定的任务。

    cron命令不一样,at不需要让任务从现在开始一直循环运行。

    语法简洁。

    一、使用教程

    1、安装at

    大部分Linux发行版已经安装at命令,可以使用at -V查看

     

    未安装时进行yum install at

    2、启动at守护进程,叫做atd

    #启动atd

    systemctl start atd

    #设置开机自启

    systemctl enable atd

     

    3、at命令

    at [选项] [日期时间]

    选项

    -f    制定包含具体指令的任务文件

    -q   指定新任务的队列名称

    -l     显示待执行任务的列表

    -d   删除指定的待执行任务

    -m  任务执行完成后向用户发送E-mail

    参数

    日期时间:指定任务执行的日期时间

    at命令中时间可以用1:30 PM,13:37,now +数字等格式

    now +数字 时间单位,是从现在开始,x单位后执行,单位可以是minutes, hours, days, weeks

    例子:

    at 5 PM +3 days

    at 18:00 tomorrow

    时间表达式

    CC指定年份的前两位数字

    YY指定年份的后两位数字

    MM指定一年的哪一个月,01-12

    DD指定一月中哪一天,01-31

    hh指定一天中哪一小时,00-23

    mm指定一小时中哪一分钟,00-59

    ss指定一分钟哪一秒,00-59

    YYMMDDhhmm[.ss] (缩写年、月、日、小时、分钟[秒])

    [[CC]YY]MMDDhhmm[.ss] (完整年、月、日、小时、分钟和[秒])

    now

    midnight

    noon

    teatime(下午4点)

    AM

    PM

    时间和日期可以是绝对的,也可以添加一个加号+,让执行时间相对于现在。

    now相对时间下,可以用以下指定单位

    minutes

    hours

    days

    weeks

    months

    years

    4、at交互性安排任务

    输入at,然后加上具体时间,进入交互模式,设置完成后,按ctrl+d进行退出保存。

     

    5、非交互式at

    使用管道符或printf将值传递给at

    echo “echo ‘how to use at’ > /root/he.txt “ | at now +1 minute

    6、其他命令

    查看at队列

    atq

     

    删除任务

    at -d 任务号

    atrm 任务号

    查看任务内容

    at -c 任务号

    二、相关文件

    1、时间规范的定义

    /usr/share/doc/at-3.1.13/timespec

    背景:

    该文件以yacc语法进行编写。yacc(Yet AnotherCompilerCompiler)是一个经典的生成语法分析器的工具,需要搭配词法分析器使用,通常交互是语法分析器调用词法分析器来实现的

    yacc的基本规范:包含三部分,定义段,规则段,用户子例程段

    …定义段…

    %%

    …规则段…

    %%

    …用户子例程段…

    备注:前两部分必须,但定义段可以是空的,用户子例程段和前面%可以省略

    token是基本项,是声明

    规则段格式

    A : BODY;

    截取的部分时间定义

     

    2、计划任务的存放

    默认情况存放在/var/spool/at/这个文件下

    3、使用权限的限定

    root用户可以使用at命令,其他用户使用at的权限在/etc/at.allow【定义可以使用计划任务的用户】和/etc/at.deny【定义不能使用计划任务的用户】文件中

    权限判定优先级:

    /etc/at.allow优先级高于/etc/at.deny

    权限判定顺序:

    /etc/at.allow文件存在时,只有该文件中用户名对应用户才能使用at;不存在时,/etc/at.deny存在,不在at.deny中的用户都可以使用at

    如果at.allow和at.deny文件都不存在,只有root能使用at

    at.deny文件默认为空,表示任何用户都可以使用at命令。

    一般情况,两个文件存在一个即可,可以自己创建。

    只有几个用户使用at时,保留at.allow,大部分都要用at时,保留at.dent

     

     

  • 相关阅读:
    【Python机器学习】利用AdaBoost元算法提高分类性能——完整的AdaBoost算法的实现
    STM32第一课:STM硬件实物图+功能简介
    Java 枚举数据转Map 查找 筛选
    分享 | 运营必备11大数据分析模型,建议收藏
    【Verilog刷题篇】硬件工程师从0到入门3|组合逻辑复习+时序逻辑入门
    数据指标是什么?简单聊聊企业的数据指标体系
    大数据安全 | 【实验】仿射加密
    Swoole协程
    JavaScript 64 JavaScript 函数 64.6 JavaScript 闭包
    【C++】从几个简单示例,理解STL里的算法<algorithm>
  • 原文地址:https://blog.csdn.net/qq_36362654/article/details/127671748