以前笔者写过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日志找到了,原来是共用的。
网友评论