第13章 计划任务

一、简介

(1)作用:

计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据

(2)一次性调度执行 at

(3)循环调度执行 cron

所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向

二、一次性调度执行at

1.程序安装(默认已经安装)

在系统光盘中。
#rpm -ivh at.x86_64        //安装
#systemctl start atd        //启动
#systemctl status atd        //查看
Active: active (running)    //运行中    inactive是不活跃就是没有运行。

2.语法格式

#at   now +5min   //五分钟后

#at  noon +4 days   //四天后中午

#at  5pm august 3 2018   //2018年8月3日下午5点   

#at   16:00 2018-11-27    //2018年11月27日16点

#at   4pm + 3days     //3天后下午4点


3.一次性任务计划例题

例1:

[root@localhost ~]# at  now   +1min
at> useradd uuuu
at> <EOT>   //CTRL+D提交任务

job 1 at Sat Mar 21 22:34:00 2015
[root@localhost ~]# atq   ----查询未执行的at任务
3 Thu Mar 30 09:55:00 2017 a root
稍等片刻。1分钟后。
[root@localhost ~]# id uuuu  ------查询uuuu用户ID来判断用户是否通过at建立成功


例2:通过重定向,一次性导入多个任务

[root@localhost ~]# vim at.jobs
useradd u99
useradd u00
touch /`date +%F`.txt   ---`  `中的命令先执行
[root@localhost ~]# at now +1min < at.jobs


三 、循环调度执行cron

1.简介

crond的概念和crontab是不可分割的。crontab是一个命令,用于设置周期性被执行的指令,crond是它的守护进程。

查看进程的状态:

#systemctl  status  crond.server

#ps   aux |  grep  crond

root 550 0.0 0.0 126300 1648 ? Ss 10:05 0:00 /usr/sbin/crond -n

2.用户级的计划任务

(1)计划任务的存放位置

#ls   /var/spool/cron/

(2)管理方式;(针对当前登陆的用户)

2.1  创建计划(Edit)

#crontab  -e   

2.2 查询计划(List)

#crontab  -l

#crontab  -l  -u  username   //管理员用来管理其他用户的计划任务

2.3删除计划(Remove)

#crontab  -r

2.4高级管理-------拒绝用户执行计划任务。

在拒绝文件中添加用户名

/etc/cron.deny

alice

jack

测试:登录该用户,通过该用户创建计划任务

[alice@localhost ~]$ crontab -e        //提示拒绝用户执行。
You (alice) are not allowed to use this program (crontab)
See crontab(1) for more information

(3)语法格式job  format   -----在/etc/crontab中

分    时    日  月   年  
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command

特殊例子:

00 02 * 6 5 ls //每年6月的周五2:00整  (特殊)
00 02 14 * 7 ls //每月14号2:00整 或者 每周日2:00整,这两个时间都执行

00 02 14 2 7 ls //每年2月14号2:00整 或者2月 每周日2:00整,这两个时间都执行

*/5 * * * * ls //每隔5分钟
00 02 1,5,8 * * ls //每月1,5,8号的2:00整
00 02 1-8 * * ls //每月1到8号的2:00整

3.系统级的计划任务

(1)简介

系统级任务计划作用:

     临时文件的清理    /tmp  和   /var/tmp

     系统信息的采集   sar

     系统日志的轮转   logrotate

      通常不是由用户定义

(2)定义位置一

定义系统的循环的任务计划------在/etc/crontab中按格式添加循环任务

#vim    /etc/crontab        //该文件中默认没有定义任何计划任务

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

(3)定义位置二【anacron】

3.1简介:

1.以天为单位或者在启动后立刻进行anacron的动作

2.侦测停机期间应该进行但是并没有进行的crontab任务,如果有就将该任务执行一遍然后自动停止。

3.2运行周期

时,天,周,月

3.3工作原理

anacron会以一小时,一天、七天、一个月为期去侦测系统未进行的crontab任务,因此对某些特殊的使用环境(关机未执行)非常有帮助。

3.4示例

第一步     主程序:/etc/cron.d

命令:#  ls    /etc/cron*



第二步    主程序所调动的程序  :   /etc/cron.d/0hourly
命令:#  cat    /etc/cron.d/0hourly  
   
第三步    主程序所调动的程序anacron  :  /etc/cron.hourly/0anacron
命令:  #  ls   /etc/cron.hourly/
 
第四步     调动了anacron程序
命令  : # cat    /etc/cron.hourly/0anacron

第五步    anacron程序的机制      -----命令anacrontab
命令  : #  cat  /etc/anacrontab

第六步   观察日志,会发现时间戳(如果没有时间戳,可以通过命令【anacron   -u 】  立刻触发该程序更新)
命令:  #  cat  /var/spool/anacron/cron.daily

第七步:观察任务计划汇总日志(通过强制执行的命令【 anacron   -f  】,可以立刻触发该程序)
查看汇总日志命令:#tail    /var/log/cron
[root@localhost ~]# tail /var/log/cron
2017-10-23
Oct 23 10:08:08 localhost anacron[15881]: Job `cron.daily' locked by another anacron - skipping
Oct 23 10:08:08 localhost anacron[15881]: Will run job `cron.weekly' in 59 min.
Oct 23 10:08:08 localhost anacron[15881]: Will run job `cron.monthly' in 79 min.
Oct 24 10:05:36 localhost anacron[15983]: Updated timestamp for job `cron.daily' to 2017-10-24
Oct 24 10:05:36 localhost anacron[15983]: Updated timestamp for job `cron.weekly' to 2017-10-24
Oct 24 10:05:36 localhost anacron[15983]: Updated timestamp for job `cron.monthly' to 2017-10-24


总结:

anacron程序是挽救系统中未及时完成的任务,用户一般不需要使用


anacron程序解释:

#anacron   [-sfn]  [job]

#anacron   -u   [job]

-s  :开始一连续的运行各项工作,会依据时间记录档的数据判断是否进行。

-f  :强制进行,而不去时间记录档

-n :  立刻进行未进行的任务,而不延迟 (delay) 等待时间;

-u  :仅升级时间记录档的时间戳记,不进行任何工作。

job :由 /etc/anacrontab 定义的各项工

猜你喜欢

转载自blog.csdn.net/bijingzhao123/article/details/79952753