zoukankan      html  css  js  c++  java
  • linux命令-定时任务at

    本文主要讲解一次性计划任务的命令at的用法!

    1.相关操作命令及功能介绍:

    在指定的时间执行一个任务,只能执行一次
    进程名为atd,首先需要确认该进程是否启动,并且配置开机自启动

    ps -ef | grep atd
    /etc/init.d/atd start
    chkconfig atd on
    chkconfig --list atd

    2.命令格式及参数:

    at [参数] [时间]

    2.1.创建at定时任务

    2.1.1.命令行直接配置,注意时间格式

    进入编辑任务模式,编辑完成ctrl+D保存退出

    at 12:03 2018-05-15
    at -t 201805161203

    实例1:

    [root@zstest1 ~]# at 12:03 2018-05-15
    at> echo "hehe" >/tmp/20180409.txt
    at> <EOT>
    job 1 at 2018-05-15 12:03

    实例2:

    [root@zstest1 ~]# at -t 201805161203
    at> echo "haha" >/tmp/20180409-02.txt
    at> <EOT>
    job 2 at 2018-05-16 12:03

    2.1.2.从指定文件读入任务而不是从标准输入读入

    at -f <文件> 

    实例:

    [root@zstest1 ~]# vim at.txt
    echo 'haha20180409-03'>/tmp/20180409-03.txt
    [root@zstest1 ~]# at -f at.txt -t 201805261205
    job 4 at 2018-05-26 12:05

    注意:
    创建完的定时任务保存在/var/spool/at/目录下,以”a0000***“等命名

    [root@zstest1 ~]# ll /var/spool/at/
    总用量 20
    -rwx------ 1 root root 2718 4月 9 18:08 a0000101838373
    -rwx------ 1 root root 2703 4月 9 18:17 a00002018e461c
    -rwx------ 1 root root 2704 4月 9 18:17 a00003018431d3

    2.2.查询计划中的at定时任务

    atq
    at -l

    实例:两个命令显示完全相同

    [root@zstest1 ~]# atq
    1       2018-05-15 12:03 a root
    2       2018-05-16 12:03 a root
    3       2018-05-26 12:05 a root

    2.3.删除at定时任务

    atrm   任务编号
    at -d   任务编号

    2.4.查看定时任务具体内容

    at -c   任务编号

    实例:

    [root@zstest1 ~]# at -c 3         # 检查任务配置情况
    ......省略
    module=() {  eval \`/usr/bin/modulecmd bash $*\`"
    "}; export module
    cd /root || {
             echo 'Execution directory inaccessible' >&2
             exit 1
    }
    ${SHELL:-/bin/sh} << 'marcinDELIMITER36791344'
    echo 'haha20180409-03'>/tmp/20180409-03.txt
    marcinDELIMITER36791344

    2.5.显示at软件版本信息

    at -V 

    2.6.当指定的任务完成之后,给用户发送邮件,即使没有标准输出

    at -m 

    3.at允许使用一套相当复杂的指定时间的方法

    3.1.绝对时间计时

    1)能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。

    2)能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
    3)能够使用12小时计时制,在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。
    4)能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。

    5)直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

    3.2.相对计时法,这对于安排不久就要执行的命令是很有好处的。

    指定格式为:“具体时间 +  数量   时间单位”

    具体时间可以是now或者其他指定的时间
    时间单位,可以是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。

    3.3.实例演示

    1)具体时间执行任务:

    at 04:00    # 今天 4点(默认为24小时制)
    at 0400
    at 17:20 tomorrow

    2)具体日期的具体时间HH:MM YYYY-MM-DD,必须先写时间,后写日期

    at 12:03 2018-05-15
    at 04pm June 17 2018 

    3)指定在多久以后执行任务:HH:MM[am|pm] + num [minutes|hours|days|weeks]

    now + 5 minutes
    04pm + 3 days

    4.at 的运行方式及安全配置

    at定时任务默认只有root用户可以使用
    对于某些特殊需求可以使用 /etc/at.allow 与 /etc/at.deny 这两个文件来进行 at 的使用限制:
    加上这两个文件后, at 的工作情况是这样的:
    1)先找寻 /etc/at.allow 这个文件,写在这个文件中的使用者才能使用 at ,没有在这个文件中的使用者则不能使用 at (即使没有写在 at.deny 当中);
    2)如果 /etc/at.allow 不存在,就寻找 /etc/at.deny 这个文件,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 文件中的使用者,就可以使用 at 命令了。
    3)如果两个文件都不存在,那么只有 root 可以使用 at 这个命令。
    由以内容可知 /etc/at.allow 是管理较为严格的方式,而 /etc/at.deny 则较为松散 (因为帐号没有在该文件中,就能够运行 at 了)。
    在一般的 distributions 当中,由于假设系统上的所有用户都是可信任的, 因此系统通常会保留一个空的 /etc/at.deny 文件,允许所有人使用 at 命令
    如果不希望有某些使用者使用 at 的话,将那个使用者的帐号写入 /etc/at.deny 即可! 一个帐号写一行。

    完毕,呵呵呵呵

  • 相关阅读:
    真人客服
    如何给Excel中的字符串添加双引号
    新车验车上牌之一整理、核对卖车方提供的新车的各项基本手续,购买车辆保险,工商验证(转)
    如何在DNN 5.0 下打包模块
    新车验车上牌之三 —— 验车、登记注册、领取牌照(转)
    新车验车上牌之二—缴纳车辆购置税(转)
    免费的windows虚拟桌面软件
    div+css布局漫谈
    几种分页算法。翻页必备
    让广告代码不再影响你的网页加载速度
  • 原文地址:https://www.cnblogs.com/tssc/p/8762786.html
Copyright © 2011-2022 走看看