linux命令详解之(at)--6/24

在Linux下,有两个命令可以用来作为计划任务而执行,
at:一次性定时任务计划执行
crontab :每天定时任务计划执行


以下仅说一下一次性任务计划执行(at)
要使用一次性任务计划,linux必须要有负责这个计划任务的五福,那就是atd服务
但是并非所有的linux distribution都默认会打开,我们需要手动激活爱听的任务
#:/etc/init.d/atd start
#:/etc/init.d/atd stop

一、at服务

  cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
  service atd start    //启动服务
  service atd  stop     //关闭服务
  service atd restart  //重启服务
  service atd reload   //重新载入配置
  service atd status   //查看服务状态 

二、at在配置文件:

at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。

atd服务启动支持用法:/etc/init.d/atd {start|stop|restart|crondrestart|status}

出现如下服务,证明系统未安装爱听的服务,如图:
linux命令详解之(at)

我们需要手动安装
#:yum install - y at
#:apt-get install at
linux命令详解之(at)

启动服务:

#:/etc/init.d/atd start
linux命令详解之(at)

如果担心启动是否执行OK的话,可使用命令查看:
#;ps aux |grep atd
linux命令详解之(at)

at 命令参数
at [参数] [时间]
-m:当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I:atq的别名
-d:atrm的别名
-v:显示任务将被执行的时间
-c:打印任务的内容到标准输出
-V:显示版本信息
-q:使用指定队列
-f:从指定文件读入任务,而不是从标准输入读入
-t:一时间参数的形式提交要运行的任务

at时间格式:
HH:AM
ex>04:00   #在今日的HH:MM是可执行,弱势该是可以超过,在在明天的此时可执行
HH:MM YYYY-MM-DD
ex>04:00 2016-03-17
强制规定在某年某月的某一天的特殊时刻进行该任务
HH:MM[am|pm] [Month] [date]
ex>04pm March 17
强制在某年某月的的某时刻进行该任务
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex>now + 5 minutes
ex<04pm + 3days
某个时间点再加几个事件后才执行该任务

使用实例:
1.三天后的下午5点执行/bin/ls
#:at 5pm+3 days
at>/bin/ls
at>按ctrl+D
linux命令详解之(at)

2.明天17点钟,输出时间到指定文件内
#:at 17:00 tomorrow
at>date>/tmp/2016.log
at>按ctrl+D
linux命令详解之(at)

3.使用atq查看系统没有执行的工作任务
#:atq
linux命令详解之(at)

4.删除已经设定的任务
#:atq
#atrm 任务号
#atq
linux命令详解之(at)

5.显示已经设定的任务内容
#:at -c  任务号
linux命令详解之(at)
中间省略N多
linux命令详解之(at)

atd设置开机启动:
#:chkconfig atd on  #当前用户
#chkconfig --level 2345 atd on  #修改服务器的默认启动等级

at命令的安全问题:
如何达到at命令的使用可控,这是一个问题,不过我哦们可以使用
/etc/at.allow 与 /etc/at.deny
来对at的使用进行限制,其工作原理如下:
先寻找/etc/at.allow,写入这个文件的使用者能用,没有在此文件中的则不能使用(即使没有写在/etc/at.deny中)
如果没有/etc/at.allow不存在,寻找/etc/at.deny文件,写在此文件中的使用者不能使用,而没有在此文件中的使用者,就可以使用
如果两个文件读不存在,那么只有root可以使用at命令。

一般情况下。allow的管理较为严格,deny则较为松散
一般情况下,按章完成后系统通常会保留一个空的/etc/at/deny文件,仪式是允许所有人使用,如果不希望某人使用的话,直接把使用者的账户跳入/etc/at.deny里面即可。注意:一个账号一行

相关命令:

● at:在特定的时间执行一次性的任务
● atq:列出用户的计划任务,如果是超级用户将列出所有用户的任务,结果的输出格式为:作业号、日期、小时、队列和用户名
● atrm:根据Job number删除at任务
● batch:在系统负荷允许的情况下执行at任务,换言之,就是在系统空闲的情况下才执行at任务

 

相关配置文件:

● 时间规范的确切定义可以在/usr/share/doc/at-3.1.10/timespec中查看
● 默认情况下计划任务都是放在/var/spool/at/这个文件
● root用户可以在任何情况下使用at命令,而其他用户使用at命令的权限定义在/etc/at.allow(被允许使用计划任务的用户)和/etc/at.deny(被拒绝使用计划任务的用户)文件中
● 如果/etc/at.allow文件存在,只有在该文件中的用户名对应的用户才能使用at
● 如果/etc/at.allow文件不存在,/etc/at.deny存在,所有不在/etc/at.deny文件中的用户可以使用at
● at.allow比at.deny优先级高,执行用户是否可以执行at命令,先看at.allow文件没有才看at.deny文件
● 如果/etc/at.allow和/etc/at.deny文件都不存在,只有root用户能使用at
● 一个空内容的/etc/at.deny表示任何用户都能使用at命令,这是默认的配置
● 一般情况下这两个文件存在一个即可。如果只有少数几个用户需要使用计划任务,那么就保留at.allow文件,如果大部分用户都要使用计划任务,那么保留at.deny即可

八:创建at任务:

创建at任务方式有两种,从文件输入和从控制台输入。以下分别用两种方式创建1分钟后将当前时间写入 /root/learngit 文件的命令

1. 文件输入:

linux中at命令详解

2. 控制台输入:

linux中at命令详解

九:实例:

linux中at命令详解
linux中at命令详解

linux中at命令详解

linux中at命令详解
linux中at命令详解

posted @ 2018-06-23 01:02  konglingbin  阅读(1480)  评论(0编辑  收藏  举报