Linux使用at执行一次性任务

    以前笔者写过cron来完成计划任务,详情参考文章-Linux crontab定时任务详细分解,区别在cron是定时任务计划执行,at是执行一次性任务。

    本实验平台为VirtualBox虚拟机CentOS 8 。

    1 、at命令

    要让特定任务运行一次,需要使用at监控程序;

    at类似于打印程序,可以把任务放在/var/spool/at目录下,指定运行时间,即可在指定时间运行;

    at相对于另一个shell,运行at time命令时,逐个发送命令,可以输入任意命令或程序;

    at的守护进程为atd,它有一组命令行工具可与守护进程(at、atq)进行交互。

    2、at time中的时间表示方法

    3、创建at一次性任务

    at now +5min 创建一个五分钟后执行的任务并进入at命令行,可以逐个发送命令。

    输入完成后以ctrl + d 结束at命令行 。

    设置成功的at计划任务会在/var/spool/at下生产一个可执行脚本,可以使用more查看,效果与下面的at -c 是一样的。

    atq(或者at -l)可以检查一次性任务,2为任务号,中间一次性任务执行时间,a表示at或batch命令生成的任务,排序号a-z。最后为发起任务的用户。

    at -c 2可以查看具体要执行的命令。

    上图在的at任务运行后,在/home/mycentos目录下就有at.log生成,里面的信息为“test,2021年 06月 03日 星期四 22:42:00 CST”  。执行成功!

    在任务未执行前,可以使用atrm + 任务号删除任务,比如说明的atrm 2 。普通的非特权用户只能查看和管理自己的任务,root可以查看和管理使用任务。

    4、at的访问控制

    和cron类似,at也提供了访问控制措施,以决定哪些用户可以使用调度服务。

    如果只有at.deny文件,而at.allow文件不存在,则除了黑名单之外的所有用户都可以使用at;

    如果at.allow文件存在,则只有白名单用户才可以使用at;

    如果两个文件都不存在,则只有root管理员可以使用at。

    可以使用man at.deny或者 man at.allow来查看说明信息。

    5、at日志文件

    cron在/var/log/cron日志文件,但是没有找到at的日志文件,搜索一番在 cron日志找到了,原来是共用的。

你可能感兴趣的:(Linux使用at执行一次性任务)