迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

Linux命令at 的使用——设置时间仅执行一次命令

作者:迹忆 最近更新:2022/11/19 浏览次数:

本篇主要涉及到一个知识点就是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的使用有很好的帮助。

希望本文对大家有所帮助。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

使用 Date_ADD() 函数在 MySQL 中添加日期和时间

发布时间:2023/05/08 浏览次数:57 分类:MySQL

本文介绍如何使用 DATE_ADD() 函数在 MySQL 中添加日期和时间。 我们将学习如何单独添加或减少天、年、月和时间,以及如何将两者结合起来(例如,天和小时)。

C 中的 Volatile 限定符

发布时间:2023/05/07 浏览次数:150 分类:C语言

本文讨论 C 编程中的 volatile 限定符。 它还显示了何时以及如何在 C 程序中使用它。

Django 中的 Select_related 方法

发布时间:2023/05/04 浏览次数:129 分类:Python

本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。

在 Linux 中更新 YUM

发布时间:2023/05/04 浏览次数:82 分类:操作系统

本文介绍了 Linux 中的 yum update 命令。本文将教我们如何在 Linux 中更新 YUM,以及如何在 Linux 系统上安装、更新、删除、查找和管理包。

在 Linux 中安装 Deb 文件

发布时间:2023/05/04 浏览次数:130 分类:操作系统

本文介绍如何在 Linux 中安装 deb 文件。在这篇 Linux 文章中,我们将学习如何在 Linux 系统上安装 .deb(Debian 软件包)文件。 我们还将看到如何在安装后删除 .deb 文件。

Linux 中的 lsof 命令

发布时间:2023/05/04 浏览次数:82 分类:操作系统

在这篇 Linux 文章中,我们将了解 Linux 操作系统中的 lsof 命令。 我们将看到如何在 Linux 中将此命令用于不同目的。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便