《零基础Linux 从入门到精通》_从零开始_轻松掌握Linux操作系统_21.3.2 基本命令参数
169
2023-10-25
【摘要】 本书摘自《零基础Linux 从入门到精通》一书中第20章,第3节,编者是零壹快学
20.3 一次性任务:at
20.3.1 运行原理
at的任务需要通过atd进程进行调度,我们可以查看一下系统中atd进程是否运行,如下所示。
与cron进程相类似,at命令设定的工作,会存放在/var/spool/at目录下,以等待atd服务进程的读 取与运行。
同样地,为了安全起见,有两种限制文件用于限制可以通过at执行任务的用户, 一种是/etc/ at.allow,另一种是/etc/at.deny。默认情况下,系统保留/etc/at.deny,也就是黑名单机制;如果对系 统安全性要求比较高的话,可以采用/etc/at.allow,白名单机制相对于黑名单机制更加严格。
第 20 章 定时执行任务
20.3.2 一次性任务:at
任务设定可以使用at命令进行,at命令最简单的命令格式如下。
at指定时间的方法比较丰富,大体有如下几种:
◇ HH:MM(小时:分钟)的方式指定执行时间,例如09:30表示9点半执行,如果今天已经过了 9点半,则会在第二天9点半执行任务。
◇ HH:MM YYYY-MM-DD(小时:分钟 年-月-日)的方式指定执行时间,如09:30 2019-06-18 执行任务。
◇ HH:MM[am|pm](小时:分钟[上午|下午])通过12小时计时制表示执行时间,例如09:30pm, 表示晚上9点半执行。
◇ now + n [minutes|hours|days|weeks],例如15分钟后执行某个任务,则是now + 15minutes。当 然也可以结合HH:MM,例如3天后的9点半执行任务,则是09:30 + 3 days
先设定一个简单at命令用于尝试,设定10分钟后执行任务,如下所示。
10分钟后,系统打印输出“After 10 minutes”,通过Ctrl+d结束输入。
类似地,设定晚上10点钟执行某个任务,如下所示。
通过-l参数可以查看当前任务列表,如下所示。
或者使用atq查询,如下所示。
基 础 Linux 从入门到精通
通过-c可以打印出任务的具体内容, -c后接任务的id,如下所示。
[root@localhost at]# at -c 3
#!/bin/sh
# atrun uid=0 gid=0
# mail 01kuaixue 0
umask 22
XDG_VTNR=1; export XDG_VTNR
XDG_SESSION_ID=5; export XDG_SESSION_ID
HOSTNAME=localhost.localdomain; export HOSTNAME
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
USER=root; export USER
……省略部分文字……
MAIL=/var/spool/mail/root; export MAIL
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin; export PATH PWD=/var/spool/at; export PWD
LANG=zh_CN.UTF-8; export LANG
HISTCONTROL=ignoredups; export HISTCONTROL
SHLVL=1; export SHLVL
XDG_SEAT=seat0; export XDG_SEAT
HOME=/root; export HOME
LOGNAME=root; export LOGNAME
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/ share/:/usr/share/; export XDG_DATA_DIRS
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
XAUTHORITY=/root/.xauthdX7PMb; export XAUTHORITY
OLDPWD=/var/spool/at/spool; export OLDPWD
cd /var/spool/at || {
echo 'Execution directory inaccessible' >&2
exit 1
}
第 20 章 定时执行任务
10分钟后任务执行,但是不会在屏幕看到输出,这是由于at命令的输出是通过邮件形式发送 给了用户,但是邮件的接收人为01kuaixue,通过上述输出第三行注释可以了解到这一点。在/var/ spool/mail中查看该用户的邮件内容,如下所示,成功执行了之前设定好的命令。
通过-d参数可以删除尚未执行的任务,-d参数后接任务的id,或者通过atrm删除任务,格式
如下。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~