Linux–只执行一次的计划任务–at命令
一、atd的启动和at的运行方式
atd的启动:
systemctl restrat atd #重新启动atd这个服务
systemctl enable atd #让这个服务开机自启动
systemctl status std #查看一下atd目前的状态
at的运行方式
我们使用at其实是将这个任务以文本的方式写入/var/spool/at/
目录内,这样这个任务就会等待atd的服务的使用执行咯
为了安全考虑,在使用at时,我们利用/etc/at.allow
和/etc/at.deny
这两个文件对at加以限制,具体流程:
- 先找
/etc/at.allow
,写在这个文件中的用户才能使用at,没有在这个文件中的不能使用哪怕它也不在/etc/at.deny中 - 如果
/etc/at.allow
不存在就找/etc/at.deny
,写在这个文件中的用户不能使用 - 如果两个文件都不存在,就只有root可以使用这个命令
二、at
语法: at [选项] [日期时间]
选项:
-f:指定包含具体指令的任务文件
-q:指定新任务的队列名称
-l:显示待执行任务的列表
-d:删除指定的待执行任务
-m:任务执行完成后向用户发送 E-mail 参数 日期时间:指定任务执行的日期时间
执行at指令最重要的地方在于指定[时间]
[日期时间格式]
HH:MM
在今天的HH:MM时刻执行,若该时刻已经过了,就明儿再执行 例如: 09:40
HH:MM YYYY-MM-DD
强制规定在某年某月某日的某时刻执行 例如:09:40 2023-07-18
HH:MM[am|pm] [Month] [Date]
强制规定某年某月某日的某时刻执行 例如:09:40am July 18
HH:MM[am|pm] + number [minutes|hours|days|weeks]
在某个时间点后再加几个时间才执行 例如:09:40am + 3 days
#再过五分钟把/root/.basher发给root自己
at now + 5 minutes
at> /bin/main -s "This is a test" root < /root/.bashrc
at> <EOT> CTRL+d 会出现<EOT>代表结束
#在2023-7-18 10:00关机
at 10:00 2023-7-18
at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOT>
使用at时,我们会进入一个at shell 环境来让用户执行任务命令,所以建议使用绝对路径
总结
本文介绍了Linux中的at命令,唐怡佳继续加油!!!