Linux系统管理
Linux任务调度:定时执行某次任务命令at
#### 安装 at 软件包 at 命令,在一个指定的时间执行一个指定任务,只能执行一次。需提前安装好 at 软件包,并开启 atd 服务。 ```shell rpm -q at #查看 at 软件包是否已安装 yum -y install at #安装 at 软件包 service atd start #启动atd服务 chkconfig atd on #让 atd 服务开机时自启动 ``` - atd服务: - ps -ef | grep atd 查看 - centos6: service atd start #启动服务 service atd stop #关闭服务 service atd status #查看服务状态 - centos7: systemctl status atd.service #查看服务状态 systemctl start atd.service #启动服务 systemctl stop atd.service #关闭服务 #### 访问控制 at 命令的访问控制是依靠 /etc/at.allow(白名单)和 /etc/at.deny(黑名单)这两个文件来实现的,具体规则如下: - 如果系统中有 /etc/at.allow 文件,那么只有写入 /etc/at.allow 文件(白名单)中的用户可以使用 at 命令,其他用户不能使用 at 命令(注意,/etc/at.allow 文件的优先级更高,也就是说,如果同一个用户既写入 /etc/at.allow 文件,又写入 /etc/at.deny 文件,那么这个用户是可以使用 at 命令的)。 - 如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件(黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。 - 如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。 - 系统中默认只有 /etc/at.deny 文件,而且这个文件是空的,因此,系统中所有的用户都可以使用 at 命令。不过,如果我们打算控制用户的 at 命令权限,那么只需把用户写入 /etc/at.deny 文件即可。 ####at 命令 - 语法: at [选项] [时间] - 选项: - -m:当 at 工作完成后,无论命令是否输出,都用 E-mail 通知执行 at 命令的用户。 - -c:工作标识号 显示该 at 工作的实际内容。 - -t: 时间 在指定时间提交工作并执行,时间格式为 [[CC]YY]MMDDhhmm。 - -d:删除某个工作,需要提供相应的工作标识号(ID),同 atrm 命令的作用相同。 - -l:列出当前所有等待运行的工作,和 atq 命令具有相同的额作用。 - -f:脚本文件 指定所要提交的脚本文件。 - 时间: - HH:MM:比如 04:00 AM。如果时间已过,则它会在第二天的同一时间执行。 - Midnight(midnight):代表 12:00 AM(也就是 00:00)。 - Noon(noon):代表 12:00 PM(相当于 12:00)。 - Teatime(teatime):代表 4:00 PM(相当于 16:00)。 - 英文月名 日期 年份:比如 January 15 2018 表示 2018 年 1 月 15 号,年份可有可无。 - MMDDYY、MM/DD/YY、MM.DD.YY:比如 011518 表示 2018 年 1 月 15 号。 - now+时间:以 minutes、hours、days 或 weeks 为单位,例如 now+5 days 表示命令在 5 天之后的此时此刻执行 - 实例 ```shell ##三天后的下午 5 点锺执行 /bin/ls : at 5pm + 3 days /bin/ls ##三个星期后的下午 5 点锺执行 /bin/ls : at 5pm + 2 weeks /bin/ls ##明天的 17:20 执行 /bin/date : at 17:20 tomorrow /bin/date ##1999 年的最后一天的最后一分钟印出 the end of world ! at 23:59 12/31/1999 echo the end of world ! ``` ```shell [root@localhost ~]# at now +2 minutes at> /root/hello.sh >> /root/hello.log #执行hello.sh脚本,并把输出写入/root/hello.log文件 at> <EOT> #使用Ctrl+D快捷键保存at任务 job 8 at 2013-07-25 20:54 #这是第8个at任务,会在2013年7月25日20:54执行 ``` ```shell [root@localhost ~J# at 02:00 2013-07-26 at> /bin/sync at> /sbin/shutdown -h now at> <EOT> job 9 at 2013-07-26 02:00 #在指定的时间关机。在一个at任务中是可以执行多个系统命令的 ``` - at 任务一旦使用 Ctrl+D 快捷键保存,实际上写入了 /var/spool/at/ 这个目录,这个目录内的文件可以直接被 atd 服务调用和执行。 #### atq 命令和 atrm 命令 - atq 命令用于查看当前等待运行的工作 - atrm 命令后者用于删除指定的工作 ```shell [root@localhost ~]# atq 9 2013-07-26 02:00 a root #说明root用户有一个at任务在2013年7月26日02:00执行,工作号是9 # atrm [工作号]删除指定的at任务 [root@localhost ~]# atrm 9 #删除9号at任务,再查询就没有at任务存在了 [root@localhost ~]# atq ```
顶部
收展
底部
[TOC]
目录
Linux进程介绍
Linux进程管理命令
Linux工作管理
Linux任务调度:循环执行定时任务命令crontab
Linux任务调度:定时执行某次任务命令at
Linux任务调度:重新执行错过的定时任务命令anacron
Linux系统资源监控分析
Linux端口查询:netstat和lsof
相关推荐
Linux文件目录管理
Linux打包压缩
Linux文本处理
Linux软件安装
Linux用户和用户组管理
Linux文件系统管理