[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)

目录结构

一、进程管理
    1. Linux进程管理的作用
    2. 进程的查看:ps
        1)查看所有进程
        2)ps命令输出的字段含义
        3)查看进程树
    3. 进程的查看:top
        1)查看系统健康状态
        2)top命令输出信息的含义分析
        3)buffer与cache比较
        4)使用top查看所有进程的资源占用数据
    4. 终结进程
        1)kill命令
        2)killall命令
        3)pkill命令
    5. 修改进程的优先级
二、工作管理
    1. 工作管理简介
        1)工作管理简介
    2. 工作管理方法
        1)把进程放入后台,并在后台执行
        2)查看后台的工作
        3)将后台暂停的工作恢复到前台执行
        4)把后台暂停的工作恢复到后台执行
    3. 后台命令脱离终端
三、系统资源查看
    1. 监控系统资源的命令:vmstat
    2. 开机时内核检测信息:dmesg
    3. 查看内存使用状态:free
    4. 查看CPU信息
    5. uptime命令
    6. 查看系统与内核相关的信息
    7. 列出进程打开or使用的文件信息
四、系统定时任务
    1. at一次执行
        1)确定at是否安装
        2)at的访问控制
        3)at命令
        4)其他的at管理命令
        5)案例应用:利用at服务控制在指定时间执行指定的任务
    2. crontab循环定时任务
        1)crond服务管理与访问控制
        2)用户的crontab设置:定时服务配置
        3)crontab常用命令
        4)crontab配置-注意事项
    3. 系统的crontab设置
    4. anacron配置
        1)anacron检测周期:
        2)anacron配置文件


一、进程管理

进程:系统中正在运行的程序or命令,至少会产生1个进程,进程会占用一定的系统资源(%CPU、%MEM),同时会耗费一定的CPU的运算时间(TIME)

1. Linux进程管理的作用

进程管理作用:
① 判断服务器的健康状态:CPU使用情况、内存使用(物理内存、空闲内存)
② 查看系统中的所有进程:进程的资源占用情况(CPU、Memory);合法or非法进程
③ 终止进程:常规方式无法关闭程序时,再使用终止进程;对于非法进程,将其对应程序完全清理,达到重启系统不再出现非法进程

2. 进程的查看:ps

1)查看所有进程
# 查看系统中所有进程(使用BSD操作系统格式)
ps aux
选项:
a   显示一个终端的所有进程(不包括会话引线)
u   显示进程的归属用户及内存的使用情况
x   显示没有控制终端的进程
[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第1张图片

PS:以上进程中的PID=1的 /sbin/init是系统的父进程,首先启动这个进程,作为其他进程启动的基础

# 查看系统中所有进程(使用Linux标准命令格式)
ps -le
选项:
-l  长格式显示(显示更加详细的信息)
-e  显示所有进程
-A  显示所有进程
[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第2张图片
2)ps命令输出的字段含义

USER:产生进程的用户
PID:进程的ID号(系统根据PID识别不同进程)
%CPU:进程的CPU资源使用占比,其值越高,表明进程越耗费资源
%MEM:进程的物理内存使用占比,其值越高,表明进程越耗费资源
VSZ:进程占用虚拟内存的大小(单位KB)
RSS:进程占用实际物理内存的大小(KB)
TTY:产生进程的终端。tty1-tty7为本地控制台终端,tty1-tty6位本地字符界面终端,tty7位图形终端,pts/0-255为虚拟终端,"?"表示非终端启动的进程,而是由内核自动启动的进程(系统进程)
STAT:进程状态。R-运行,S-睡眠,T-停止状态,s-包含子进程,"+"-位于后台
START:进程的启动时间
TIME:进程占用CPU运算所耗费的时间(非系统时间)。若耗费时间越长,则说明进程越耗费的资源越多
COMMAND:产生进程的命令名。通过该字段中显示的进程名来判断系统中运行的有哪些程序

3)查看进程树
pstree [选项]
选项:
-p  显示进程的PID
-u  显示进程的所属用户
[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第3张图片

以上pstree在Linux的Shell/Bash当中通过远程工具进程调用远程服务所产生的进程

显示进程的归属层级结构、PID、所属用户:

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第4张图片

3. 进程的查看:top

1)查看系统健康状态

top命令监控资源:

top [选项]
选项:
-d 时长(s)    指定top命令刷新的频率:1次/时长(s)。默认是1次/3s
-b           使用批处理模式输出。一般和"-n"选项联用
-n 次数       指定top命令执行的次数。一般和"-b"选项联用
[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第5张图片

top交互模式:

在top命令的交互模式当中可执行的命令:
?/h 显示交互模式的帮助
P   以CPU使用率[%CPU]排序(默认方式)
M   以内存使用率[%MEM]排序
N   以PID排序
q   退出top
2)top命令输出信息的含义分析
[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第6张图片

【1】第1行:任务队列信息

内容 含义
top - 05:33:05 当前系统时间
up 11:36 系统的运行时长
2 users 当前登录的用户数
load average: 0.00, 0.00, 0.00 系统在之前1min、5min、15min的平均负载。
一般情况(非绝对,需要联合%CPU、%MEM分析):
load average < 1,负载较小;load average ≥1,系统已经超出负荷

【2】第2行:进程信息

内容 含义
Tasks: 93 total 系统中的进程总数
1 running 正在运行的进程数
92 sleeping 睡眠的进程数
0 stopped 正在停止的进程数
0 zombie 僵尸进程数。
可能出现的情形:某些进程所依赖的底层进程被终止,导致上层进程被卡起。若持续出现其值≠0,则手工排查僵尸进程并根据需要而终止对应进程

【3】第3行:CPU信息

内容 含义
Cpu(s): 0.0%us 用户模式的CPU占比(被用户占用的CPU百分比)
0.3%sy 系统模式的CPU占比(被系统占用的CPU百分比)
0.0%ni 改变过优先级的用户进程的CPU占比
98.7%id 空闲CPU占比(比较关键的指标)。
一般不能低于20%id,即需要%CPU≤80%;若%CPU>80%,则可能产生性能瓶颈
0.8%wa 等待输入/输出的进程的CPU占比
0.0%hi 硬中断请求服务的CPU占比
0.1%si 软中断请求服务的CPU占比
0.0%st 虚拟时间占比。st(Steal Time),虚拟CPU等待实际CPU的时间占比
若处于一个系统管理程序下的虚拟机环境中,系统管理程序会耗费一定的CPU处理时间

【4】第4行:Memory信息

内容 含义
Mem: 597192k total 物理内存的整体大小
486092k used 已使用的内存
111100k free 空闲的内存
99316k buffers 作为缓冲的内存(缓冲可加速数据写入)

【5】第5行:交换分区信息

内容 含义
Swap: 2064376k total 交换分区(虚拟内存)的整体大小
0k used 已使用的交换分区
2064376k free 空闲的交换分区
232040k cached 作为缓存的交换分区(缓存可加速数据的读取)
3)buffer与cache比较
  • buffer:缓冲,加速数据写入到硬盘。
    当系统不繁忙时,保存和写入数据到硬盘可以同步;当系统繁忙时,不断的写入数据,数据保存时可能首先保存到作为缓冲的内存中,当达到一定数量时,再集中写入硬盘,这样可以减少对硬盘的写操作
  • cache:缓存,加速数据从硬盘读取。
    较多数据放置在硬盘上,CPU需要不断从硬盘读取数据进行运算,导致硬盘较慢、系统变卡、效率变低。先把需要不断读取的数据放在作为缓存的内存(cache Memory)中,然后直接从cache中读取的速度则要比直接从硬盘读取快(运算速度:硬盘<<内存<
4)使用top查看所有进程的资源占用数据
# -b:使用批处理(允许输出重定向)
# -n 1:刷新1次数据后,导入指定文件中保存
top -b -n 1 > /root/top.log
[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第7张图片

PS:top命令本身也会占用较多的资源,刷新的频率保持默认的1次/3s即可,不建议将刷新频率设置过快

4. 终结进程

1)kill命令
# 查看可用的进程信号
kill -l

常用的信号有:1-SIGHUP、9-SIGKILL

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第8张图片
进程信号&作用:
信号代号 信号名称 说明
1 SIGHUP 该信号让进程立即关闭,然后重新读取配置文件之后重启
2 SIGINT 程序终止信号,用于终止前台进程。相当于输出ctrl+c快捷键
8 SIGFPE 在发生致命的算术运算错误时发出,不仅包括浮点运算错误,还包括溢出及除数为0等其它所有的算术的错误
9 SIGKILL 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。一般用于强制终止进程
14 SIGALRM 时钟定时信号,计算的是实际的时间或时钟时间.alarm函数便用该信号
15 SIGTERM 正常结束进程的信号,kill命令的默认信号。有时如果进程已经发生问题,这个信号是无法正常终止进程的,才会尝试SIGKILL信号,也就是信号9
18 SIGCONT 该信号可以让暂停的进程恢复执行,本信号不能被阻断
19 SIGSTOP 该信号可以暂停前台进程,相当于输入ctrl+z快捷键。本信号不能被阻断
# 重启进程(平滑重启)
kill -1 PID
kill -HUP PID
# 强制终结进程
kill -9 PID

以上,信号1(SIGHUP)的作用是平滑重启,重新加载配置文件,不会把服务已登录的用户剔除掉(应用在修改配置文件后需要重启生效,且不影响已登录用户的场景)

2)killall命令
# 按照进程名终结进程
killall [选项][信号] 进程名
选项:
-i  交互式,询问是否要终结某个进程
-I  忽略进程名的大小写
3)pkill命令
# 按照进程名终结进程
pkill [选项][信号] 进程名
选项:
-t 终端号  按照终端号踢出用户

按照终端踢出用户:

# 查询本机已登录的用户(包含终端名称)
w 
# 强制终结指定的虚拟终端登录的进程(登录用户)
pkill -9 -t 进程名(终端名称)
[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第9张图片

kill、killall、pkill 比较:
kill是终结单一进程,其后跟PID号;killall、pkill则是终结一组进程,其后跟进程名

5. 修改进程的优先级

Linux是多用户、多任务的操作系统,可同时运行较多的进程,但CPU同一个时刻只会运算一个指令,进程优先级决定了每个进程的处理先后顺序(CPU本身运算较快,人为并不容易感受到不同进程优先级的区别)

执行命令:ps -le

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第10张图片
PRI 和 NI 含义说明:

(1)PRI取值表示优先级:PRI (Priority) 和 NI (Nice)都关联优先级,其值越小则进程优先级越高。PRI(最终值)= PRI(原始值)+ NI(调控值)。PRI为最终生效的优先级,通过修改NI值来使得PRI值发生变化,不能直接修改PRI值
(2)用户可调整NI值的范围:① 普通用户调整NI值的范围为[0,19],且只能调整自己的进程(普通用户只能调高NI值,不能降低);② root用户调整NI值的范围为[-20,19],且可调整任何用户的进程

renice命令
# 修改已存在进程的 NI值
renice [优先级] PID


二、工作管理

1. 工作管理简介

1)工作管理简介

工作管理:在单个登录终端中(登录的shell界面)同时管理多个工作(jobs),把程序放置于Linux后台来执行,从而利于当前需要操作的程序or服务可以正常稳定使用

注意事项
① 当前的登录终端,只能管理当前终端的工作,而不能管理其他登录终端的工作
② 放入后台的命令必须可以持续运行一段时间,才能扑捉和操作这个工作
③ 放入后台执行的命令不能和前台用户有交互or需要前台输入,否则放入后台只是暂停状态,不能是运行状态

2. 工作管理方法

1)把进程放入后台,并在后台执行

方式1:在命令后加 "&",放入后台是运行状态。如:tar -zcf etc.tar.gz /etc &
方式2:组合键【Ctrl+Z】,放入后台是暂停状态

适用场景:
① 复制:如复制较大容量的文件,耗费时间较长的情形
② 打包、压缩、解压缩:处理较大容量or数量的文件的情形
③ 搜索:如大范围搜索,将会耗费较多时间的情形
......

2)查看后台的工作
jobs [-l]
选项:
-l  显示工作的PID

"+"表示最近一个放入后台的工作,工作恢复时默认也将恢复该工作;"-"表示倒数第二个放入后台的工作;没加符号的表示是较早放入后台的工作

3)将后台暂停的工作恢复到前台执行
fg %工作号

以上%可省略,工作号≠PID

4)把后台暂停的工作恢复到后台执行
bg %工作号

PS:后台恢复执行的命令,是不能和前台有交互的命令,否则不能恢复到后台执行

3. 后台命令脱离终端

把命令放入后台,只能在当前登录终端执行。一旦退出or关闭终端,后台程序就会停止运行。若为守护进程(deamon),则不会因关闭终端而停止运行,如:mysqld。

后台命令脱离登录终端执行的方法:
  • 方法1:把需要在后台执行的命令加入/etc/rc.local文件,即可随系统启动而加载
  • 方法2:使用系统定时任务,让系统在指定的时间执行某个后台命令
  • 方法3:使用nohup命令
# 让命令脱离终端依然运行
nohup [命令] &

案例:
vim nohup-test.sh

#!/bin/bash

# 循环1000次,每次循环间隔10s,输出自增量 i的值追加到指定文件中
for ((i=1;i<=1000;i=i+1))
    do
        echo $i >> /root/for.log
        sleep 10s
    done

chmod 755 nohup-test.sh
nohup /root/nohup-test.sh &

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第11张图片

执行命令:ps aux
可查看到进程 /root/nohup-test.sh在终端中运行,退出终端后再次登入终端,依然可以查看到该进程在运行

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第12张图片

输出的日志文件:

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第13张图片

若要终止进程,则执行:kill -9 PID,本次为 kill -9 13113

三、系统资源查看

1. 监控系统资源的命令:vmstat

# 每隔指定时间间隔刷新一次,一共刷新设置的次数
vmstat [刷新间隔时间 刷新次数]

如每隔1s刷新一次,共刷新3次:vmstat 1 3
每刷新一次即会生成一行最新的数据,直至刷新完成,如下:

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第14张图片

vmstat命令整合了系统的进程、内存、交换分区、磁盘读写、系统通信、CPU的信息,具体如下:

  • procs(进程信息字段)
    r:等待运行的进程数。其值越大,说明系统越繁忙
    b:不可被唤醒的进程数量。其值越大,系统越繁忙
  • memory(内存信息字段)
    swpd:虚拟内存使用容量(KB)
    free:空闲内存容量
    buff:缓冲的内存容量
    cache:缓存的内存容量
  • swap(交换分区的信息)
    si:从磁盘中交换到内存中数据的容量
    so:从内存中交换到磁盘中数据的容量
    [ si、so对应的值越大,说明数据需要在磁盘-内存之间交换,资源耗费多,系统性能越差 ]
  • io(磁盘读写信息)
    bi:从块设备读取数据的容量(读磁盘)
    bo:写入到块设备的数据的容量(写磁盘)
    bi、bo对应的值越大,说明系统的I/O越繁忙
  • system(系统信息)
    in:每秒被中断的进程次数
    cs:每秒进行的时间切换次数
    [ in、cs对应的值越大,说明系统与接口设备的通信越繁忙 ]
  • CPU
    us:非内核进程消耗CPU运算时间的占比
    sy:内核进程消耗CPU运算时间的占比
    id:空闲CPU的占比
    wa:等待I/O所消耗的CPU占比
    st:被虚拟机所盗用的CPU占比

2. 开机时内核检测信息:dmesg

# 查询服务器的硬件信息
dmesg
# 查看服务器硬件中CPU的信息
dmesg | grep "CPU"

3. 查看内存使用状态:free

free [-b|-k|-m|-g]
选项:
-b  以字节为单位显示
-k  以KB为单位显示(默认即以KB为单位显示)
-m  以MB为单位显示
-g  以GB为单位显示

第1行:
total:总内存数
used:已使用的内存数
free:空闲内存数
shared:多个进程共享的内存总数
buffers:缓冲内存数
cached:缓存内存数
第2行:
-/buffers/cache的内存数:
+/buffers/cache的内存数:
第3行:
total:Swap的总数
used:已使用的Swap数
free:空闲的Swap数
------------------------------------
PS:以上默认单位为:KB

4. 查看CPU信息

cat /proc/cpuinfo

/proc/目录存放内存相关的信息,CPU信息也保存在内存中

5. uptime命令

# 显示系统的启动时间&平均负载
uptime

uptime展示的也是top命令的第1行数据,w命令亦可查看此行数据

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第15张图片

若只查看某个时刻静态的平均负载(load average),则从减少资源耗费的角度,建议使用uptime或w命令,因top命令相对会占用更多资源

6. 查看系统与内核相关的信息

uname [选项]
选项:
-a  查看系统所有相关选项
-r  查看内核版本
-s  查看内核名称
[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第16张图片

判断当前系统的位数(使用某个外部命令查看操作系统位数):file /bin/ls

查询当前Linux系统的发行版本:lsb_release -a

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第17张图片

若系统提示"-bash: lsb_release: command not found",则需要安装lsb:
CentOS6为:yum -y install lsb
CentOS7为:yum -y install redhat-lsb

7. 列出进程打开or使用的文件信息

lsof [选项]
选项:
-c 字符串  只列出以字符串开头的进程打开的文件
-u 用户名  只列出某个用户的进程打开的文件
-p PID    列出某个PID进程打开的文件

通过进程调用文件,查看相关信息:

# 查询系统中所有进程调用的文件
lsof | more
# 查询某个文件被调用的进程
lsof 文件名
# 查询某个进程调用的文件
lsof -c 进程名
# 按照用户名查询某个用户的进程调用的文件
lsof -u root
[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第18张图片


四、系统定时任务

1. at一次执行

1)确定at是否安装
# 查看at服务是否安装
chkconfig --list | grep "atd"
# 查看at服务的运行状态
service atd status
# 重启at服务
service atd restart

服务名其后的字母"d"表示守护进程,即系统的服务,在系统后台运行

2)at的访问控制

① 若系统中有/etc/at.allow文件,则只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令(/etc/at.deny文件会被忽略)
② 若系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件(黑名单)中的用户不能使用at命令(对root无限制作用)
③ 若系统中这两个文件都不存在,则只有root用户可以使用at命令

3)at命令
at [选项] 时间
选项:
-m  当at工作玩抽,用email通知执行at命令的用户
-c [jobid]  显示该at工作的具体内容;jobid为工作号
时间:
HH:MM
HH:MM YYYY-MM-DD
HH:MM[am|pm] [month][date]
HH:MM[am|pm]+[minutes|hours|days|weeks]
4)其他的at管理命令
# 查询当前服务器上的 at工作
atq
# 删除指定的 at任务
atrm [jobid]
5)案例应用:利用at服务控制在指定时间执行指定的任务

案例:
通过at服务控制某个时间开始执行工作任务:将shell脚本运行的结果追加到指定文件中存放

编写脚本:vim hello.sh

#!/bin/bash
echo "hello atd !" >> /root/hello.log

1min之后执行at工作任务:at now + 1 minutes
进入at服务交互模式,指定具体执行的操作:at> /root/hello.sh >> /root/hello.log
保存并退出at服务交换模式:组合键【Ctrl+D】

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第19张图片

2. crontab循环定时任务

1)crond服务管理与访问控制
# 查看是否安装有crond服务
chkconfig --list | grep "crond"
# 查看crond服务的运行状态
service crond status

# 重启crond服务
service crond restart
# 设置crond服务为开启状态
chkconfig crond on

访问控制
① 若系统中有/etc/cron.allow文件,则只有写入此文件的用户可以使用crontab命令,没有写入的用户不能使用crontab命令(/etc/cron.deny文件会被忽略,即/etc/cron.allow文件的优先级更高)
② 若系统中只有/etc/cron.deny文件时,则写入此文件的用户不能使用crontab命令,没有写入文件的用户可以使用crontab命令

2)用户的crontab设置:定时服务配置
crontab [选项]
选项:
-e  编辑crontab定时任务
-l  查询crontab任务
-r  删除当前用户所有的crontab任务

PS:以上操作是以当前登录用户的身份执行操作,若为普通用户则不能执行超出权限的命令

定时任务设置格式:

# 进入crontab编辑界面,即可编辑需要执行的工作
# "*"控制定时时间,执行任务可为命令or脚本
* * * * * 执行的任务
符号 作用 控制范围
第1个* 每小时中的:第 x 分钟 0-59
第2个* 每天中的:第 x 小时 0-23
第3个* 每月中的:第 x 天 1-31
第4个* 每年中的:第 x 月 1-12
第5个* 每周中的:星期 x 0-7
0、7:星期天
1:星期一
特殊符号 含义
* 任何时间
第1个*:每小时中的每分钟都执行一次
注:第1个*使用时要慎重,若每分钟都执行占用大量资源的场景时可能会引起服务器异常
, 不连续的时间
0 8,12,16 * * *:每天的8:00,12:00,16:00都执行一次
- 连续的时间范围
0 5 * * 1-6:星期1-6的凌晨5:00都执行
*/n 每隔多久执行一次
*/10 * * * *:每隔10min就执行一次

每个月的1,10,15号的凌晨05:00执行一次备份任务:
0 5 1,10,15 * * /root/sh/auto-bak.sh

3)crontab常用命令
# 查看root用户的crontab任务
crontab -l
# 删除root用户的所有定时任务
crontab -r
4)crontab配置-注意事项

【1】定时任务中的6个选项不能为空,为必填项
【2】定时任务关联的执行命令,建议用绝对路径
【3】系统所能识别的最小时间为min,最大时间为month。如:从09:01:59到09:02:00,系统所能识别的分钟数已经发生变化(01-->02),不一定是60s才会发生变化
【4】不建议同时配置星期x和每月中的第y天的具体数字(系统认为是只要满足其中之一即会执行,非同时满足条件才执行),以免引起人为逻辑理解的混乱

3. 系统的crontab设置

系统定时任务crontab-e是每个用户执行的命令,不同的用户身份可以执行各自的定时任务,但有的定时任务需要系统执行,此时需要编辑配置文件/etc/crontab进行配置不同身份的操作命令权限

[LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务)_第20张图片
执行系统定时任务的方法:

方法1:手工执行定时任务
方法2:设置系统定时任务:
方式① 把需要定时执行的脚本复制到
/etc/cron.{hourly, daily, weekly, monthly} 目录中的任意一个
方式② 修改 /etc/crontab配置文件
如每个月的1,10,15号的凌晨05:00执行一次备份任务:0 5 1,10,15 * * root /root/sh/auto-bak.sh

4. anacron配置

anacron:用来保证在系统关机时错过的定时任务,可在系统开机之后再执行。在指定的任务时间服务器未开机,系统重新开机后anacron能够自动检测和判断并执行漏掉的定时任务,anacron调用以上 /etc/cron.{hourly, daily, weekly, monthly}文件中配置的定时任务

1)anacron检测周期

① anacron会使用1d、7d、1month作为检测周期(能识别的最小时间为:天)
② 在系统的/var/spool/anacron/目录中存在cron.{daily,weekly,monthly}文件,用于记录上次执行cron的时间
③ 和当前时间做比较,若两个时间的差值超过了anacron指定的时间差值,说明有cron任务被漏执行
④ 把定时任务配置在 /etc/cron.{hourly, daily, weekly, monthly}文件中,可被anacron调用

2)anacron配置文件

vim /etc/anacrontab

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
# 最大随机延迟:45min
RANDOM_DELAY=45
# the jobs will be started during the following hours only
# anacron执行时间范围为 3:00-22:00
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
# 天数            强制延迟(min)           工作名称        实际执行命令
1   5   cron.daily      nice run-parts /etc/cron.daily
7   25  cron.weekly     nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly        nice run-parts /etc/cron.monthly
备注说明:

① 调用过程描述:
daily任务:首先读取/var/spool/anacron/cron.daily中的上一次anacron执行的时间
和当前时间比较,若超过1d,则强制延迟5min,然后45min以内随机延迟,其后run-parts脚本开始调用/etc/cron.daily
weekly任务:超过7d,强制延迟25min,...,run-parts脚本调用/etc/cron.weekly
monthly任务:超过一个月,强制延迟45min,...,run-parts脚本调用/etc/cron.monthly
② 使用nice命令指定默认优先级,使用run-parts脚本(Shell脚本)执行/etc/cron.{daily, weekly, monthly}目录中的所有可执行文件
③ 延迟的作用是避免在同一时间内多次执行任务,以免服务器资源占用及其压力过大
④ 对于CentOS6,/etc/crontab不对/etc/cron.{daily, weekly, monthly}调用,但/etc/anacrontab默认是会对/etc/cron.{daily, weekly, monthly}进行调用,故可将定时任务配置在/etc/cron.{daily, weekly, monthly}中可生效

你可能感兴趣的:([LN_17] Linux系统管理(进程管理|工作管理|系统资源|定时任务))