龙空技术网

计划任务-2-at、batch

种花家的老兔子 63

前言:

此刻小伙伴们对“centos7计划任务”大体比较重视,我们都需要学习一些“centos7计划任务”的相关内容。那么小编在网上搜集了一些有关“centos7计划任务””的相关内容,希望咱们能喜欢,同学们快快来了解一下吧!

知识点

atd服务的启动

at的使用

batch的作用

课程目标

能够说出如何启动at的相关服务

能够说出at和batch如何使用

能够记住at有哪些相关文件

10.2 仅执行一次的计划任务

首先,我们先来谈谈仅运行一次的计划任务at

10.2.1 atd 的启动与 at 运行的方式

在使用at之前我们要确保atd服务是运行的,这个需要我们去检查一下,因为并不是所有的发行版linux默认都是开启这个服务的,但是在CentOS中是默认开启的

[root@localhost ~]# systemctl status atd● atd.service - Job spooling tools   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)   Active: active (running) since Mon 2020-01-13 09:34:03 CST; 1h 17min ago#查询atd服务的状态[root@localhost ~]# systemctl is-enabled atdenabled#查询是否开启默认启动如果没有启动[root@localhost ~]# systemctl start atd  # 启动[root@localhost ~]# systemctl enable atd#设置为开启启动

at的工作模式

at在运行的时候会将定义好的工作以文本文件的方式写入 /var/spool/at/ 目录内,该工作便能等待 atd 这个服务的调用,但是出于安全考虑,并不是所有的人都可以使用 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.deny 文件,允许所有人使用 at 。如果有需要的话可以手动建立at.allow文件

10.2.2 at的使用

单一计划任务的进行就使用 at 这个命令!将 at 加上一个时间即可!基本的语法如下:

[root@localhost ~]# at  [-mldv] TIME  [root@localhost ~]# at -c 工作序号 选项与参数:  -m :当 at 的工作完成后,发邮件通知用户,需要mail服务-l :at -l 相当于 atq,查看用户使用at定制的工作-d :at -d 相当于 atrm ,删除一个工作;  -v :详细信息;  -c :查看指定工作的具体内容。  TIME:时间格式          HH:MM      ex> 16:00            在今天指定的时刻进行,若该时刻已超过,则明天的这个时间进行此工作。           HH:MM  YYYY-MM-DD   ex> 16:00 2021-07-30            指定在某年某月的某一天的时间进行该工作!             HH:MM[am|pm] [Month] [Date]  ex>  04am Jun 15               另外一种年月日和时间的指定方式             HH:MM[am|pm] + number [minutes|hours|days|weeks]            ex> now  + 5 minutes    五分钟之后        ex> 04am + 3 days       三天后的上午四点  

at在使用过程中的时间指定很重要,另外在使用过程中如果涉及到路径的指定,强烈建议使用绝对路径,定义完成at之后使用键盘上的ctrl+d结束

(一)at 的管理

有的时候我用at定义完计划任务之后,发现命令有错误,此时我们就可以使用atq 与 atrm 进行管理。

[root@localhost ~]# atq  [root@localhost ~]# atrm 工作编号 [root@localhost at]# atq2   Fri Feb 21 16:00:00 2020 a root# 在 2020-02-21 的 16:00 有一项工作,该项工作是root设置的,工作编号为2[root@localhost ~]# atrm 2  [root@localhost ~]# atq  # 没有任何信息,表示该工作被移除了!  

这样,你可以利用 atq 来查询,利用 atrm 来删除,利用 at 来直接定义计划任务但是如果系统当前非常忙碌话,能不能让指定的工作在较闲的时候执行呢?那就是batch!

(二)batch:系统有空时才进行后台任务

batch是at的一个辅助工具,也是利用at进行工作的,只是加入一些判断功能。它会在 CPU 的工作负载小于 0.8 的时候,才执行指定的工作! 这个负载指的是 CPU 在单一时间点所负责的工作数量。不是 CPU 的使用率! 比如说,如果我运行一个程序,这个程序可以使CPU 的使用率持续达到 100% , 但是 CPU 的负载接近于1,因为 CPU 仅负责一个工作,而我同时运行了两个这样的程序,那么 CPU 的使用率还是 100% ,但是工作负载则变成 2 了。

也就是说,当 CPU 的负载越大,CPU 必须要在不同的工作之间进行频繁的切换。所以会非常忙碌! 而用户还要额外进行 at 完成工作,就不太合理!所以才有 batch 命令的产生!

CentOS从7开始,batch 已经不再支持时间参数了,所以我们在使用batch定制计划任务的时候可以这样输入

root@localhost at]# batchwarning: commands will be executed using /bin/shat> cp /etc/passwd /rootat> <EOT>job 4 at Mon Jan 13 11:31:00 2020[root@localhost at]# cd[root@localhost ~]# ls公共  模板  视频  图片  文档  下载  音乐  桌面  anaconda-ks.cfg  initial-setup-ks.cfg  passwd

所以,batch可以通过cpu负载自动判断是否可以执行指定的工作。

总结

atd服务的启动

at的运行方式

at.allow&at.deny文件的作用

相关的命令与管理

batch的使用

重点:at.allow文件和at.deny文件的作用,at,atq,atrm命令的使用

难点:两个文件优先级的问题,相关命令的使用

标签: #centos7计划任务