1. at一次性执行定时任务
1.1 at服务管理与访问控制
at命令要想正确执行,需要atd服务的支持。atd服务是独立的服务
[root@centos2 ~]# systemctl status atd
atd服务启动后,at命令才能正常使用。at命令的访问控制,at的访问控制指的是允许哪些用户使用at命令设定定时任务,或者不允许哪些用户使用at命令。可以想象成为设定黑名单或设定白名单。at的访问控制是依靠/etc/at.allow文件(白名单)和/etc/at.deny文件(黑名单)这两个文件来实现的,具体规则:
如果系统中有/etc/at.allow文件,那么只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令,其他用户不能使用at命令(/etc/at.deny文件会被忽略,也就是说同一个用户既写入/etc/at.allow文件,也写入/etc/at.deny文件,那么这个用户是可以使用at命令的,因为/etc/at.allow文件优先级更高。)
如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件(黑名单)中的用户不能使用at命令,其他用户可以使用at命令。不过这个文件对root用户不生效。
如果系统中这两个文件都不存在,那么只有root用户可以使用at命令。
系统中默认时只有/etc/at.deny文件,而且这个文件是空的,这样的话系统中所有的用户都可以使用at命令。不过如果我们打算控制用户的at命令权限,把用户写入/etc/at.deny文件即可。
/etc/at.allow文件的权限更高,如果/etc/at.allow文件存在,则/etc/at.deny文件失效。/etc/at.allow管理行为更加严格,因为只有写入这个文件的用户才能使用at命令,如果需要禁用at命令的用户较多,则可以把少数用户写入这个文件。/etc/at.deny文件的管理较为松散,如果允许使用at命令的用户较多,则可以把禁用的用户写入这个文件。不过这两个文件都不能对root用户生效。
1.2 at命令
[root@centos2 ~]# at [选项] 时间 选项: -m:当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户 -c 工作号:显示该at工作的实际内容 时间: at支持的时间格式如下: HH:MM 在指定的“小时:分钟”执行命令,例:01:10 HH:MM YYYY-MM-DD 在指定的“小时:分钟 年-月-日”执行,例:01:10 2019-08-08 HH:MM[am|pm] [month] [date] 在指定的"小时:分钟[上午|下午] [月] [日]"执行,例如 01:10 July 25 HH:MM[am|pm] [minutes|hours|days|weeks] 在指定的时间“再加多久执行”,例 now + 5 minutes,05am + 2 hours
例
[root@centos2 ~]# cat hello.sh #!/bin/bash echo "hello world" [root@centos2 ~]# at now +1 minutes at> /root/hello.sh >> hello.log at> <EOT> 使用Ctrl+d保存at任务 job 1 at Wed Nov 13 17:44:00 2019 这是第一个at任务 [root@centos2 ~]# cat hello.log hello world
1.3 其他at管理命令
at还有查询和删除命令
[root@centos2 ~]# atq #查询当前服务器上的at工作 [root@centos2 ~]# atq 2 Wed Nov 13 17:55:00 2019 a root [root@centos2 ~]# atrm [工作号] #删除指定的at任务 [root@centos2 ~]# atrm 2 [root@centos2 ~]# atq #删除2号at任务后,再查询就没有at任务存在了