【Linux】一步一步学Linux——at命令(133)

00. 目录

01. 命令概述

at命令允许指定运行脚本时间,at的守护进程atd会以后台模式运行,检查系统上的一个特殊目录来获取at命令的提交的作业。默认情况下,atd守护进程每60秒检查一次目录。有作业时会检查作业运行时间,如果与当前时间匹配,则运行此作业。

注意:需要启动服务 [deng@itcast ~]$ systemctl restart atd.service

02. 命令格式

格式:at [参数]

03. 常用选项

-m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I atq的别名
-d atrm的别名
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V 显示版本信息
-q<列队> 使用指定的列队
-f<文件> 从指定文件读入任务而不是从标准输入读入
-t<时间参数> 以时间参数的形式提交要运行的任务 

04. 参考示例

4.1 三天后的下午 5 点钟执行

[deng@itcast ~]$ at 5pm + 3days
at> /bin/ls
at> <EOT>
job 1 at Thu Aug 15 17:00:00 2019
[deng@itcast ~]$ 

4.2 明天17点钟,输出时间到指定文件内

[deng@itcast ~]$ at 17:00 tomorrow
at> data > /tmp/test.log
at> <EOT>
job 2 at Tue Aug 13 17:00:00 2019
[deng@itcast ~]$ 

4.3 查看系统没有执行工作任务

[deng@itcast ~]$ atq
1       Thu Aug 15 17:00:00 2019 a deng
2       Tue Aug 13 17:00:00 2019 a deng
[deng@itcast ~]$ 

4.4 删除未执行的任务

[deng@itcast ~]$ atrm 1
[deng@itcast ~]$ atq
2       Tue Aug 13 17:00:00 2019 a deng
[deng@itcast ~]$ 

4.5 显示已设置的任务内容

[deng@itcast ~]$ at -c 2
#!/bin/sh
# atrun uid=1000 gid=1000
# mail deng 0
umask 2

4.6 删除未执行的任务(2)

[deng@itcast ~]$ atq
2       Tue Aug 13 17:00:00 2019 a deng
[deng@itcast ~]$ at -d 2

使用at -d或者atrm(二者同效)指定id来删除系统中的等待作业,id为atq命令输出的第一行顺序数字:

4.7 立即执行指定的脚本

[deng@itcast ~]$ at now -f a.sh

4.8 25分钟之后运行脚本

[deng@itcast ~]$ at now +25min -f a.sh
job 4 at Mon Aug 12 20:10:00 2019
[deng@itcast ~]$ 

4.9 指定时间运行脚本

[deng@itcast ~]$ at 22:00 -f a.sh
job 5 at Mon Aug 12 22:00:00 2019
[deng@itcast ~]$ 

4.10 指定日期执行脚本

[deng@itcast ~]$ at 12/01/2019 -f a.sh
job 6 at Sun Dec  1 19:46:00 2019
[deng@itcast ~]$ 

4.11 atq的别名 等价于at -l

[deng@itcast ~]$ at -l
5       Mon Aug 12 22:00:00 2019 a deng
6       Sun Dec  1 19:46:00 2019 a deng
[deng@itcast ~]$ 

4.12 atrm的别名 等价于at -d

[deng@itcast ~]$ atrm 5

05. at的运行方式

既然是计划任务,那么应该会有任务执行的方式,并且将这些任务排进行程表中。那么产生计划任务的方式是怎么进行的? 事实上,我们使用 at 这个命令来产生所要运行的计划任务,并将这个计划任务以文字档的方式写入 /var/spool/at/ 目录内,该工作便能等待 atd 这个服务的取用与运行了。就这么简单。

不过,并不是所有的人都可以进行 at 计划任务。为什么? 因为系统安全的原因。很多主机被所谓的攻击破解后,最常发现的就是他们的系统当中多了很多的黑客程序, 这些程序非常可能运用一些计划任务来运行或搜集你的系统运行信息,并定时的发送给黑客。 所以,除非是你认可的帐号,否则先不要让他们使用 at 命令。那怎么达到使用 at 的可控呢?

我们可以利用 /etc/at.allow 与 /etc/at.deny 这两个文件来进行 at 的使用限制。加上这两个文件后, at 的工作情况是这样的:

先找寻 /etc/at.allow 这个文件,写在这个文件中的使用者才能使用 at ,没有在这个文件中的使用者则不能使用 at (即使没有写在 at.deny 当中);

如果 /etc/at.allow 不存在,就寻找 /etc/at.deny 这个文件,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 文件中的使用者,就可以使用 at 命令了。

如果两个文件都不存在,那么只有 root 可以使用 at 这个命令。

透过这个说明,我们知道 /etc/at.allow 是管理较为严格的方式,而 /etc/at.deny 则较为松散 (因为帐号没有在该文件中,就能够运行 at 了)。在一般的 distributions 当中,由于假设系统上的所有用户都是可信任的, 因此系统通常会保留一个空的 /etc/at.deny 文件,意思是允许所有人使用 at 命令的意思 (您可以自行检查一下该文件)。 不过,万一你不希望有某些使用者使用 at 的话,将那个使用者的帐号写入 /etc/at.deny 即可! 一个帐号写一行。

06. 总结

在这里插入图片描述

07. 附录

参考:【Linux】一步一步学Linux系列教程汇总

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值