Linux命令at 的使用——设置时间仅执行一次命令
本篇主要涉及到一个知识点就是atd服务。与此服务类似的还有事crond服务。这两个服务的作用我们可以和javascript的两个功能函数做一个类似。学过javascript的都知道,在javascript中有setInterval 和 setTimeout 这两个函数。
setInterval函数的作用是循环执行代码,可以设定间隔时间。这个函数就类似于我们这里要说的crond的作用。
setTimeout函数的作用是延时多长时间执行代码,执行完成以后就不再执行了。这个函数就类似于我们接下来要说的atd的作用。
对于crond和atd这是两个服务,我们使用的时候是使用它们对应的命令,分别为crontab和at。
atd服务开启
at是可以执行一次指定的命令就结束进程的命令。如果需要at的执行需要我们开启atd服务,一般linux系统默认是带有atd服务的。开启的命令也很简单。
# service atd start
//或者使用下面的命令
# /etc/init.d/atd start
at的运行方式
其实at的工作方式就是将要执行的命令所对应的进程排进自己的进程表中。当我们使用at命令来产生要运行的工作的时候,at会将这个工作以文档的形式存储在/var/spool/atd/目录内,然后改工作就会等待atd服务进程的调用执行了。
一般情况下,为了服务器的安全,需要对用户设置权限。并不是所有的用户都可以进行at工作。我们可以利用/etc/at.allow 和 /etc/at.deny 两个文件来进行at的使用限制。
/etc/at.allow 将允许使用at的用户写入该文件,在这个文件中的用户有使用at的权限。当然不在这个文件中的用户就没有使用at的权限。
/etc/at.deny 将不允许使用at的用户写入该文件,在这个文件中的用户没有使用at的权限。当然不在这个文件中的用户就有使用at的权限。
当然atd的进程是这样工作的。在一个用户要使用at的时候,会先去找寻/etc/at.allow,该用户如果在这个文件中就允许其使用at,如果不在就不允许使用at。如果/etc/at.allow不存在,就回去找寻/etc/at.deny文件,如果用户不在这个文件中同样也允许其使用at。当然如果两个文件都不存在则默认只有root用户可以使用at了。也就是说,即使这两个文件同时存在也有个优先级,atd进程会优先考虑/etc/at.allow文件。
在一般的linux版本中,由于假设系统上的所有的用户都是可以被信任的,所以说系统通常会保留一个空的/etc/at.deny文件。
at命令格式
at命令非常简单,其基本格式如下
# at [选项] Time
可用选项:
-c : 列出后面接的实际命令的内容。
-l : at –l 列出目前系统上该使用者的所有的at工作例程。
-d : 可以取消一个在at例程中的工作。
-m : 当at工作完成以后,用email通知该使用者工作已经完成。
-v :列出at的工作例程的详细信息。
Time : 时间格式。定义什么时候进行这项工作。
HH:MM 几时几分,在今天的HH:MM时刻进行这项工作。
HH:MM YYYY-MM-DD 在某年某月某天的某时某分进行这项工作
HH:MM[am|pm] [Month] [Date] 同上,强制在某年某月某日的某时刻进行!
HH:MM[am|pm] + number [minutes|hours|days|weeks]
就是说,在某个时间点『再加几个时间后』才进行。
好了,我们下面看一个例子。从现在开始3分钟以后删除/tmp目录下的文件。
# at now + 3 minutes //这里该回车了
at> rm –rf /tmp/*
at> //这里需要按下 ctrl+d
这样在我们等待3分钟以后就会发现/tmp目录下面已经空了。
在命令没有执行之前,如果我们不想执行该工作命令了,我们可以将其删除。这里我们可以借助两个命令 atq 和 atrm。
atq 相当于 at –l 查看at的所有工作序号。我们可以选择其中一个删除
atrm 相当于 at –d 删除指定的工作,后面接工作的序号。
使用如下
# atq
7 2016-04-29 15:53 a root
//或者使用 at –l
# at –l
7 2016-04-29 15:53 a root
我们看到,工作的序号为7。下面我们就可以使用 atrm 或者 at –d 来删除该工作了
# atrm 7
// 或者
# at –d 7
然后我们在查看的时候就发现该项工作已经没有了。
好了,对于at命令后面的其他的参数选项大家可以自己试着使用,看其显示结果。这样对我们对at的使用有很好的帮助。
希望本文对大家有所帮助。
本文转载自:迹忆客(https://www.jiyik.com)
以上是 Linux命令at 的使用——设置时间仅执行一次命令 的全部内容, 来源链接: utcz.com/z/290062.html