使用at命令设定一次性定时任务 2016-05-21 11:00

说明

Linux的crontab已经被广泛使用。crontab比较适合多次、周期性执行的定时任务。而at更适合一次执行的定时任务。

安装

一般Linux发行版中默认已经安装并启用at。如果没有,则需要手工安装。

安装:

yum -y install at

at安装后,会在OS生成一个叫atd的服务。可以通过service命令和chkconfig命令对此服务进行管理:

service atd <status|stop|restart|status>
chkconfig --list atd
chkconfig atd <|on|off>

使用

添加定时任务

语法:

# at [参数] [时间]
at> 执行的指令
退出at命令 ctrl+d。

举个例子,设定11:00自动echodate> /tmp/currDateTime.txt

[root@cheyo ~]# at 11:00
at> echo `date` > /tmp/currDateTime.txt
at> <EOT>
job 1 at 2016-05-21 11:00
[root@cheyo ~]#

时间的几种表示法:

07:00
07:00am
07:00pm
07:00AM
07:00PM
23:15 2016-06-24
11:30+2hours
11:30 + 2 hours
07:30am+3weeks
07:30am+3days
07:30am+3minutes

查询定时任务

at -l
atq

删除定时任务

at -d 2(Job ID)
atrm 2

使用权限控制

at通过/etc/at.allow/etc/at.deny两个文件来控制各个OS用户是否具有使用at的权限。规则如下:

  1. /etc/at.allow文件存在时:只有文件中列出的OS用户有使用权限。
  2. /etc/at.allow文件不存在时。则看/etc/at.deny文件是否存在。如果存在,则/etc/at.deny中列出的用户没有权限,其他用户有权限。
  3. 如果/etc/at.allow/etc/at.deny两个文件都不存在,则只有root用户有使用权限。
  4. 一般Linux中,默认没有/etc/at.allow文件,有一个空的/etc/at.deny文件,表示默认所有用户都有权限使用at功能。

参考文档

  1. linux/centos定时任务at指令详解
Tags: #at    Post on Linux