ad

《零基础Linux 从入门到精通》_从零开始_轻松掌握Linux操作系统_20.3 一次性任务:at

admin 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,白名单机制相对于黑名单机制更加严格。

《零基础Linux 从入门到精通》_从零开始_轻松掌握Linux操作系统_20.3 一次性任务:at

第 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小时内删除侵权内容。

上一篇:《认知计算与深度学习》_基于物联网云平台的智能应用_2.3.2 虚拟机管理和灾难恢复
下一篇:从《Python数据分析案例教程》中_领悟数据和Python的魅力_5.3 Pandas 读写Excel文件中的数据
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×