美文网首页IT实用分享Linux小推车linux tools
[LN_17] Linux系统管理(进程管理|工作管理|系统资源

[LN_17] Linux系统管理(进程管理|工作管理|系统资源

作者: Fighting_001 | 来源:发表于2019-03-03 20:02 被阅读110次

    目录结构

    一、进程管理
        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   显示没有控制终端的进程
    

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

    # 查看系统中所有进程(使用Linux标准命令格式)
    ps -le
    选项:
    -l  长格式显示(显示更加详细的信息)
    -e  显示所有进程
    -A  显示所有进程
    
    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  显示进程的所属用户
    

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

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

    3. 进程的查看:top

    1)查看系统健康状态

    top命令监控资源:

    top [选项]
    选项:
    -d 时长(s)    指定top命令刷新的频率:1次/时长(s)。默认是1次/3s
    -b           使用批处理模式输出。一般和"-n"选项联用
    -n 次数       指定top命令执行的次数。一般和"-b"选项联用
    

    top交互模式:

    在top命令的交互模式当中可执行的命令:
    ?/h 显示交互模式的帮助
    P   以CPU使用率[%CPU]排序(默认方式)
    M   以内存使用率[%MEM]排序
    N   以PID排序
    q   退出top
    
    2)top命令输出信息的含义分析

    【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中读取的速度则要比直接从硬盘读取快(运算速度:硬盘<<内存<<CPU)
    4)使用top查看所有进程的资源占用数据
    # -b:使用批处理(允许输出重定向)
    # -n 1:刷新1次数据后,导入指定文件中保存
    top -b -n 1 > /root/top.log
    

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

    4. 终结进程

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

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

    进程信号&作用:
    信号代号 信号名称 说明
    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 进程名(终端名称)
    

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

    5. 修改进程的优先级

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

    执行命令:ps -le

    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 &

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

    输出的日志文件:

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

    三、系统资源查看

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

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

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

    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的内存数:used-(buffers+cached)
    +/buffers/cache的内存数:free+(buffers+cached)
    第3行:
    total:Swap的总数
    used:已使用的Swap数
    free:空闲的Swap数
    ------------------------------------
    PS:以上默认单位为:KB

    4. 查看CPU信息

    cat /proc/cpuinfo
    

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

    5. uptime命令

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

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

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

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

    uname [选项]
    选项:
    -a  查看系统所有相关选项
    -r  查看内核版本
    -s  查看内核名称
    

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

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

    若系统提示"-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
    

    四、系统定时任务

    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】

    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进行配置不同身份的操作命令权限

    执行系统定时任务的方法:

    方法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系统管理(进程管理|工作管理|系统资源

        本文链接:https://www.haomeiwen.com/subject/ufkbyqtx.html