2018-12-05 15:44:14 ijijni 阅读数 1462
  • 第24课时 服务与计划任务(上) 时长: 19分钟

    1、【秦冰】Linux生产一线实战运维案例初级视频课程(RHCSA-RHCE-RHCA精讲)2、【秦冰】Linux生产一线实战运维案例中级视频课程(RHCSA-RHCE-RHCA精讲)3、【秦冰】Linux生产一线实战运维案例高级视频课程(RHCSA-RHCE-...

    8795课时 0分钟 15人学习 秦冰
    免费试看

首先在安装atd组件

yum -y install at apt-get install at

然后启动

systemctl start atd

把atd设为开机启动

systemctl enable atd

在使用atd服务时,请注意使用用户,一般情况下可以登录linux的用户都可以调用atd,如果调用用户不可登陆需要先修改该用户可登陆。如nginx用户。修改方法:

打开 /etc/passwd,把nginx修改为如下:

nginx:x:994:991:Nginx web server:/var/lib/nginx:/bin/bash

 

2017-02-08 14:55:03 judyfun 阅读数 9954
  • 第24课时 服务与计划任务(上) 时长: 19分钟

    1、【秦冰】Linux生产一线实战运维案例初级视频课程(RHCSA-RHCE-RHCA精讲)2、【秦冰】Linux生产一线实战运维案例中级视频课程(RHCSA-RHCE-RHCA精讲)3、【秦冰】Linux生产一线实战运维案例高级视频课程(RHCSA-RHCE-...

    8795课时 0分钟 15人学习 秦冰
    免费试看

查看了多个资料,并没有在 /etc/init.d/ 这个目录下发现 atd 文件,所以命令

[root@localhost ~]# /etc/init.d/atd status
 /etc/init.d/atd start 

并不起作用。
使用命令:

[root@localhost ~]# systemctl start atd
[root@localhost ~]# ps -ef |grep atd
root      4717     1  0 14:36 ?        00:00:00 /usr/sbin/atd -f
root      4733  4429  0 14:36 pts/1    00:00:00 grep --color=auto atd

这样就可以看到atd的进程了,然后重新启动任务

[root@tev137 ~]# at 14:40
at> date > /root/datetest.log
at> <EOT>
job 6 at Wed Feb  8 14:40:00 2017

搞定!

2019-03-06 23:15:56 qq_41453285 阅读数 1091
  • 第24课时 服务与计划任务(上) 时长: 19分钟

    1、【秦冰】Linux生产一线实战运维案例初级视频课程(RHCSA-RHCE-RHCA精讲)2、【秦冰】Linux生产一线实战运维案例中级视频课程(RHCSA-RHCE-RHCA精讲)3、【秦冰】Linux生产一线实战运维案例高级视频课程(RHCSA-RHCE-...

    8795课时 0分钟 15人学习 秦冰
    免费试看

前言

  • 单一计划任务:执行一次之后就不再执行的任务
  • 并且所有的Linux系统都默认支持at服务和at命令。centos支持,Ubuntu就默认不支持
  • 下面以centos系统做案例

一、at服务

1.概念

  • ①Linux系统想要使用单一计划任务,需要at服务的支持
  • ②at服务是由atd程序产生的
  • ②并非Linux发型版本都默认启动了这个任务,有时候我们需要手动的启动这个服务
  • ③并且所有的Linux系统都有这个服务

2.atd服务的设置

  • 重新启动at服务:systemctl  restart  atd
  • 让at服务开机自动启动:systemctl  enable atd
  • 查看一下at目前的状态:systemctl  status  atd
  • Loaded:是否开机自启动,后面enable表示不能
  • Active:是否正在运行,running正在运行

二、at服务的运作方式

1.at的运行方式

  • at这个命令是用来产生所要运行的单一计划任务的
  • at产生一个任务,然后以文本文件的方式写入/var/spool/at/目录内,该任务便能等待atd服务来使用与执行

2./etc/at.allow与/etc/at.deny文件

  • 并不是所有人都可以执行at计划任务,因为出于安全的原因。于是系统用这两个文件来管控at产生任务:
  • /etc/at.allow文件:只有在这个文件中的用户才能使用at,不在这个文件中的用户不能使用at命令(尽管没有写在at.deny中)
  • /etc/at.deny文件:写在这个文件中的用户不能使用at命令,而没有在这个文件中的用户就可以at命令
  • 如果这两个文件都不存在,那么只有root才可以使用at命令
  • /etc/at.allow与/etc/at.deny文件的注意事项
  • /etc/at.allow文件比较严谨
  • /etc/at.deny不严谨,因为写在这个文件的用户不能使用at命令,不在这个文件中的用户可以执行命令,不太安全

  • 这两个文件不一定同时存在,有一个存在时只会使用其中一个。怎么使用还是看自己的设定,我的系统中默认是at.deny文件,并且文件是空的,代表所有用户都可以使用at命令设定任务

三、at的命令格式与演示案例

1.格式

  • at   [选项]   时间格式

相关参数与选项

  • -m:如果at内的shell命令没有任何输入信息,也发送email给at任务使用者
  • -l:at -l 相当于atq命令,猎虎目前系统上面所有该使用的at计划
  • -d:at -d相当于atrm命令,可以取消一个正在at计划中的任务
  • -v:可以使用较明显的时间格式列出at计划中的任务列表
  • -c:后面跟任务编号,列出该任务的内容

时间的格式有以下几种

  • HH:MM
  • HH:MM  YYYY-MM-DD
  • HH:MM[am/pm]  [Month]  [Date]
  • HH:MM[am/pm]  + number  [minuter/hours/days/weeks]:就是在某个时间点之后再过多久才执行
  • now:表示现在的时间

2.注意事项

  • 输入at命令之后,书写任务时,命令和文件等都使用绝对路径
  • 任务书写完之后,按住ctrl+d结束退出

3.at的执行与终端显示关系

  • 如果我们想要在终端显示Hello字样,然后在at里面输入echo "Hello",等时间到了,屏幕并不会显示信息:因为at的执行与终端环境无关,所有的标准输出/标准错误输出都发送到执行者的mailbox中,所以在终端看不到任何信息
  • 解决上面的方法:通过终端的设备处理,如果你在tty1登录,就在at内输入:echo "Hello" > /dev/tty1

4.at的输出问题(-m选项)

  • 如果在at shell内输入的命令并没有输出任何信息,那么at不会发email给执行者。那么此时你可以使用-m选项来执行命令,这样at就会发送一个信息给执行者,而不论该命令执行有无信息输出

5.演示案例

  • 案例一:再过5分钟之后,将/root/.bashrc文件发送给root自己

  • 案例二:承上,上面产生的任务编号为2,查看这个任务的内容

  • 案例三:计划在2019-03-06  23:30关机

四、at的脱机继续执行的功能与特点

1.概念

  • 当你用at分配一个计划之后,系统会将该项at任务独立出你的bash环境,直接交给系统的atd程序来管理。
  • 因此,但你执行了at的任务之后就可以立刻脱机了,剩下的工作就完全交给Linux管理

2.案例

  • 你用你的Windows系统与Linux系统连接服务,两个系统之间有服务的交流,如果没有设置at任务,一个系统关机,连个系统之间的连接都会断开。如果你设置了at任务,即使你的Windows关机了,该服务还在运行

五、at任务的管理命令:atq、atrm

  • atq:查看你当前系统中有多少个at任务
  • atrm:删除一个at任务,后面接at任务编号
  • 查看任务

  • 删除任务3再查看,任务没了

六、batch命令

1.概念

  • 其实batch是利用at来执行命令的
  • batch可以设置单一计划任务,并且这个任务是在你的系统较闲,CPU任务负载小于0.8的时候,才开始执行。可用于避免打扰一个非常忙碌的系统运行

2.CPU负载

  • CPU负载指在但一时间所负责的任务数量,而不是CPU的使用率
  • 任务数量越多,CPU的负载越高

3.注意事项

  • 因为batch设置的任务只要当CPU负载低于0.8就会执行,所以不需要任何时间参数,直接输入batch就可以设置任务

4.演示案例

  • 我们使用Pi脚本进行计算任务,然后使用batch命令在CPU较闲时指定updatedb命令
  • 第一步:使用Pi命令计算

  • 第二步:使用uptime查看平均任务负载

  • 第三步:使用batch设置系统CPU负载低于0.8时执行updatedb任务

  • 第四步:查看当前任务

  • 第五步:jobs查看当前系统中的后台任务

  • 第六步:使用kill删除编号为1、2、3、4这四个任务

  • 第七步:刚取删除了后台任务,再使用uptime查看当前CPU负载还没降下去,所以4号batch任务还存在

  • 第八步:我们等待了几分钟之后,等待CPU负载率降低,batch任务就执行了,执行完再查看任务就不在了

2012-05-17 16:12:12 kingstar158 阅读数 3731
  • 第24课时 服务与计划任务(上) 时长: 19分钟

    1、【秦冰】Linux生产一线实战运维案例初级视频课程(RHCSA-RHCE-RHCA精讲)2、【秦冰】Linux生产一线实战运维案例中级视频课程(RHCSA-RHCE-RHCA精讲)3、【秦冰】Linux生产一线实战运维案例高级视频课程(RHCSA-RHCE-...

    8795课时 0分钟 15人学习 秦冰
    免费试看

inux下面有atd和crond两种计划任务,其中,atd服务使用的at命令只能执行一次,而crond服务使用的crontab定义的命令,是循环作用的,所以crond才符合我们的要求。


crontab支持两种状态:

一、直接编写计划任务;

二、使用目录的方式,放在目录里面的都会定时执行。


1、可以使用的用户
默认情况下,系统中可以登陆的用户,都可以使用crontab定义计划任务。不过,可以通过下面两个文件限制权限:


/etc/cron.allow:
将可以使用 crontab 的账号写入其中,若不在这个档案内的使用者则不能使用 crontab;


/etc/cron.deny:
将不可以使用 crontab 的账号写入其中,若未记录到这个档案当中的使用者,就可以使用 crontab。


类似TCPWrapper定义的方式。


2、直接使用crontab编辑计划任务:


命令:
crontab [-u username] [-l|-e|-r]


参数:
-u :通过-u帮其它使用者建立/移除 crontab;
-e :编辑 crontab 的内容
-l :查看 crontab 的内容
-r :移除 crontab 的所有内容(是全部的内容,如果只是删除某个,用-e编辑即可)


内容格式:
* * * * * 命令
前面的五个*号,表示分、时、日、月、周,如:
代表意义 分钟 小时 日期 月份 周
数字范围 0-59 0-23 1-31 1-12 0-7
*号代表任何时间都接受的意思,任意。
*号之间用空格分开,如果是一段范围,用-号连接;如果是隔开几个时间,用,号表示。
另外,命令必须是编写计划任务的用户有权限执行的,并且最后用绝对路径。


例如:
#crontab -e
59 23 1 5 * mail linuxing < /home/test.txt
每在5月1日,23点59分就把/home/test.txt的内容作为邮件发给linuxing用户
*/5 * * * * /opt/test.sh
每5分钟就执行一次/opt/test.sh脚本
0 3,6 * * * /usr/local/bin/test.sh
每在3点和6点整点都执行/usr/local/bin/test.sh命令
0 8-12 * * * /root/backup.sh
8 点到 12 点之间的每小时的0分都执行/root/backup.sh


4、基于目录的方式执行计划任务
对于系统的计划任务,已经在/etc/crontab里面定义,采用的就是基于目录的方式。系统会定时读取该文件,并根据里面的定义执行命令。


可以使用vi直接编写/etc/crontab文件,其中格式如下:
#cat /etc/crontab
SHELL=/bin/bash #使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin #预定义的PATH路径
MAILTO=root #出现问题发Email给该用户
HOME=/ #家目录


# run-parts
01 * * * * root run-parts /etc/cron.hourly #每小时的目录
02 4 * * * root run-parts /etc/cron.daily #每天
22 4 * * 0 root run-parts /etc/cron.weekly #每周日
42 4 1 * * root run-parts /etc/cron.monthly #每个月1号
分 时 日 月 周 执行者身份 命令


可以看到前面的五个参数的定义和直接编辑计划任务是一样的,增加了执行的用户定义和run-parts参数。


run-parts后面跟的是目录名称,例如:/etc/cron.hourly,表示每小时01分就到/etc/cron.hourly目录中执行目录下的所有可执行文件;当然,目录是可以自己定义的。


如果你需要增加系统的计划任务,只需要在对应的目录添加执行文件即可,例如:我需要在每天都执行updatedb的操作,则我只需要把/usr/bin/updatedb的执行命令链接到/etc/cron.daily目录就可以了。


同样的,如果不需要使用目录的方式,也可以使用如下的方式:
02 01 * * * root /root/test.sh


也就是没有了run-parts,后面就直接跟命令的绝对路径


5、注意事项
如果使用crontab编辑计划任务或直接修改/etc/crontab文件后,计划任务没有生效,可能需要重启一下crond服务:service crond restart


当编写/etc/crontab文件的时候,不要漏了指定执行计划任务的用户,这是和直接用crontab -e编辑不同的。


某用户(如root)用crontab -e编辑的计划任务存放在/var/spool/cron/root,这个文件下。但最好不要直接编辑他,因为crond执行的时候,会在/tmp目录中建立需要的临时文件,直接编辑会对此有影响,甚至出错。


cron执行的每一项工作都会被纪录到/var/log/cron这个日志文件中,可以从这个文件查看命令执行的状态。

文章来源:点击打开链接

2018-04-24 19:02:31 weixin_34120274 阅读数 0
  • 第24课时 服务与计划任务(上) 时长: 19分钟

    1、【秦冰】Linux生产一线实战运维案例初级视频课程(RHCSA-RHCE-RHCA精讲)2、【秦冰】Linux生产一线实战运维案例中级视频课程(RHCSA-RHCE-RHCA精讲)3、【秦冰】Linux生产一线实战运维案例高级视频课程(RHCSA-RHCE-...

    8795课时 0分钟 15人学习 秦冰
    免费试看

一、延时任务

atd 服务
linux 下一次性定时计划任务命令的守候进程,是一种开机自启的服务


at命令是在atd服务开启的情况下才可以进行操作,否则会出现报错。
定时与延时任务


at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。
参数详解

at -V 输出版本编号
at -l 列出所有的延时任务
at -c job 会在终端返回该延时任务的所有的详细信息
at -r job 删除此延时任务
定时与延时任务
定时与延时任务
定时与延时任务
定时与延时任务


at命令执行权限的设定
黑名单:/etc/at.deny
白名单:/etc/at.allow
在系统中不存在白名单时,黑名单中设定的用户是不能进行执行at命令的。
定时与延时任务
在系统存在白名单时,系统默认白名单中的用户可进行at操作
当此allow文件为空时,表示仅管理员可以进行at操作


二、定时任务

crond服务
crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件
crond可以满足系统周期性要进行的活动


crontab参数详解
crontab -u user 使用什么身份(若无指定,表示使用当前用户身份)
crontab -e 表示编辑crond文件内容
crontab -u root -e
分 时 日 月 周
星号 星号 星号 星号 星号 rm -fr /mnt/* 表示每分钟进行删除mnt目录中的操作
crontab -u root -l 在终端返回root用户的定时任务
crontab -u root -r 删除此用户的所有定时任务
在/var/spool/cron/目录中会有以用户名为名称的文件名
crontab -u root -r -i在执行删除操作时进行提示
配置crontab黑白名单
与at命令一致,
在系统中不存在白名单时,黑名单中设定的用户是不能进行执行at命令的。
在系统存在白名单时,系统默认白名单中的用户可进行at操作
当此allow文件为空时,表示仅管理员可以进行at操作
定时与延时任务
定时与延时任务


三、systemd-tmpfiles命令的使用

此命令主要是根据/usr/lib/tmpfiles.d中文件的指引,进行指引,创建、删除、清理 易变文件与临时文件。
文件内容的格式为:
f /mnt/file1 1755 root linux 1m
f表示为文件
/mnt/file1 表示在/mnt目录下file1文件
1755表示对此文件的权限
root linux 分别表示为此文件的所属人与属组
1s表示1秒钟
create 创建及写入所有 f, F, w, d, D, v, p, L, c, b, m 标记的文件与目录
--clean 清理所有过期的文件与目录
在这里可以知道为什么/tmp目录中会进行定期清理内容

转载于:https://blog.51cto.com/13584122/2107398

AT命令之ATD

阅读数 17082