美文网首页
进程管理

进程管理

作者: 尛尛大尹 | 来源:发表于2017-08-24 16:31 被阅读0次

    1.进程概念

    (1)内核的功用:

    进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
    

    (2)进程: 运行中的程序的一个副本,是被载入内存的一个指令集合

    当我们“执行一个程序或命令”就可以触发一个事件而取得一个PID,系统应该仅认识二进制文件,
    那么当我们让系统工作的时候,就需要启动一个二进制文件,那个二进制文件就是程序。程序一般
    放在磁盘中,然后通过用户的执行来触发。触发后会加载到内存中成为一个个体,那就是进程。
    

    (3)进程ID(Process ID,PID)

    被用来标记各个进程UID、GID、和SELinux语境决定对文件系统的存取和访问权限,通常从执行
    进程的用户来继承存在生命周期。
    

    (3)task struct:Linux内核存储进程信息的数据结构格式
    (4)task list:多个任务的的task struct组成的链表
    (5)进程创建:

    init:第一个进程
    
    • 子进程与父进程
    有时候我们杀掉一个进程,过一阵他又自动产生,而且产生的PID还和原先的不一样,如果不是crontab
    工作调度的影响,肯定有父进程存在,杀掉子进程,父进程会再生一个,所以我们要先删除父进程
    
    进程:都由其父进程创建,CoW
    fork(), clone()【克隆】
    

    2.进程优先级

    (1)系统优先级:数字越小,优先级越高
    0-139(CentOS4,5)
    各有140个运行队列和过期队列
    0-98,99(CentOS6)
    (2)实时优先级: 99-0 值最大优先级最高
    (3)nice值:-20到19,对应系统优先级100-139或99(-20优先级高)
    
    image.png

    3.Big O:时间复杂度,用时和规模的关系

    O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)

    4.进程相关概念

    (1)进程内存:

    Page Frame: 页框,用存储页面数据,存储Page 4k
    LRU:Least Recently Used 近期最少使用算法,释放内存物理地址空间和线性地址空间
    MMU:Memory Management Unit负责转换线性和物理地址
    TLB:Translation Lookaside Buffer 翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存
    

    (2)IPC: Inter Process Communication

    同一主机: signal:信号
    shm: shared memory
    semaphore:信号量,一种计数器
    不同主机:rpc: remote procedure call
    socket: IP和端口号
    

    5.进程状态

    (1)Linux内核:抢占式多任务
    (2)进程类型:

    后台:可以自动运行的工作,你无法用Ctrl+c终止它
    (放在后台里的进程不能等待terminal/shell输入,既不能与用户互动,比如说vim)
    前台:跟终端相关,通过终端启动的进程。简单地说,你可以控制与执行命令的这个环境
    注意:两者可相互转化
    

    (3)进程状态:

    运行态:running
    就绪态:ready
    睡眠态:
    可中断:interruptable
    不可中断:uninterruptable
    停止态:stopped,暂停于内存,但不会被调度,除非手动启动
    僵死态:zombie,结束进程,父进程结束前,子进程不关闭
               (如果某个进程CMD后面还接上<defunct>就是僵尸进程)
    

    6.pstree命令:

    -A:各进程数之间的连接以为ASCII字符来连接
    -p:同时列出每个进程的PID
    -u:同时列出每个进程的所属账号名称
    -U:各进程数之间的连接以为UTF-8码字符来连接
    

    7.查看进程ps:process state

    Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中

    • ps [OPTION]...
    支持三种选项:
    UNIX选项 如-A -e
    BSD选项 如a
    GNU选项 如--help
    

    • 选项:

    • 默认显示当前终端中的进程
    • a 选项包括所有终端中的进程
    • x 选项包括不链接终端的进程
    • u 选项显示进程所有者的信息
    • f 选项显示进程的父进程
    • k|--sort 属性 对属性排序
    • o 属性… 选项显示定制的信息
    pid、comm、%cpu、%mem、state、tty、euser、ruser
    
    Paste_Image.png
    VSZ: Virtual memory SiZe,该进程使用掉的虚拟内存量(KB)
    RSS: ReSident Size,该进程占用的固态内存量
    TTY:该进程是在哪个终端机上面运行
              若与终端机无关则显示?
             tty1~tty6是本机上面登陆者程序
             pts/0等,表示为网络连接进主机的进程
    USER:该进程属于哪个进程账号
    PID:该进程的标识符
    START:该进程被触发启动的时间
    TIME:该进程实际使用CPU运行的时间
    COMMAND:该进程的实际命令
    %CPU:该进程使用掉的CPU资源百分比
    %MEM:该进程所占用的物理内存百分比
    STAT:该进程目前的进程状态
              R:running
              S: interruptable sleeping
              D: uninterruptable sleeping
              T: stopped
              Z: zombie
              +: 前台进程
              l: 多线程进程
              L:内存分页并带锁
              N:低优先级进程
              <: 高优先级进程
              s: session leader,会话(子进程)发起
    
    • 常用组合:-ef
    -e: 显示所有进程
    -f: 显示完整格式程序信息
    
    • 常用组合:-aux(查所有的进程看系统)
    • 常用组合:-eFH
    -F: 显示更完整格式的进程信息
    -H: 以进程层级格式显示进程相关信息
    
    • 常用组合:自定义
    # ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
    # ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid, 
    # ps -eo pid,pcpu,comm
    
    ni: nice值
    pri: priority 优先级
    psr: processor CPU编号
    rtprio: 实时优先级
    
    • 常用组合:-aux(显示系统所有的进程)
       示例:
    # ps axo pid,cmd,psr,ni,pri,rtprio
    

    8.进程优先级

     进程优先级调整:
    静态优先级:100-139
    进程默认启动时的nice值为0,优先级为120
    只有根用户才能降低nice值(提高优先性)
    (1)nice命令:

    nice [OPTION] [COMMAND [ARG]...]
    

    (2)renice命令:

    renice [-n] priority pid...
    

    (3)查看:

    ps axo pid,comm,ni
    

    9.搜索进程pgrep或ps 选项 | 其它命令

    (1)最灵活:ps 选项 | 其它命令
    (2)按预定义的模式:pgrep
    pgrep [options] pattern

    -u uid: effective user,生效者
    -U uid: real user,真正发起运行命令者
    -t terminal: 与指定终端相关的进程
    -l: 显示进程名
    -a: 显示完整格式的进程名
    -P pid: 显示指定进程的子进程
    

    (3)按确切的程序名称:/sbin/pidof

    pidof bash
    

    10.uptime查看系统启动时间与工作负载

    显示当前时间,系统已启动的时间、当前上线人数,系统平
    均负载(1、5、10分钟的平均负载,一般不会超过1)

    (1) 系统平均负载:指在特定时间间隔内运行队列中的平均进程数
    (2) 通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题
    (3)如果linux主机是1个双核CPU,当Load Average 为6的时候说明机器已经被充分使用
    

    11.top:动态查看进程的变化

    • 相对于ps是选取一个时间点的进程状态,top则可以持续检测程序运行的状态
      top [-d 数字] |top [-bnp]
    -d :后面可以接秒数,就是整个页面更新的秒数
    -b:以批次的方式执行top,全部显示所有进程
        通常会搭配数据流重定向来将批处理的结果输出成文件
    -n:与-b搭配。表示需要进行几次top结果输出
    -p:指定某些个PID来进行查看检测
    在top执行的过程中可以使用按键的命令:
                  ?:显示在top当中可以输入的按键命令
                   P:以CPU使用资源排序显示
                   M:以内存的使用资源排序显示
                   N:以PID来排序
                   T:由该进程CPU时间累计排序
                    q:离开top软件的按键
    

    (1)排序:

    P(大写):以占据的CPU百分比,%CPU(默认)
    M(大写):占据内存百分比,%MEM
    T(大写):累积占据CPU时长,TIME+
    

    (2)首部信息显示:

    uptime信息:l命令
    tasks及cpu信息:t命令
    cpu分别显示:1 (数字)
    memory信息:m命令
    退出命令:q
    修改刷新时间间隔:s
    终止指定进程:k
    保存文件:W
    

    (3)栏位信息简介

    us:用户空间
    sy:内核空间
    ni:调整nice时间
    id:空闲
    wa:等待IO时间
    hi:硬中断
    si:软中断(模式切换)
    st:虚拟机偷走的时间
    

    12.htop命令:EPEL源

    选项:

    -d #: 指定延迟时间;
    -u UserName: 仅显示指定用户的进程
    -s COLUME: 以指定字段进行排序
    

    子命令:

    s: 跟踪选定进程的系统调用
    l: 显示选定进程打开的文件列表
    a:将选定的进程绑定至某指定CPU核心
    t: 显示进程树
    

    13.vmstat命令:检测系统资源变化

    vmstat [options] [delay [count]]

    -a:使用inactive/active (活跃与否)替代buffer/cache内存输出信息
    -f :开机到目前为止系统复制(fork)的进程数
    -s:将一些事件导致的内存变化情况列表说明
    -S:后面接单位,让显示的数据有单位,eg:K/M取代bytes
    -d:列出磁盘的读写总量统计表
    -p:后面列出分区,可现实该分区的读写总量统计表
    

    内存字段含义:

    procs: 
            r:可运行(正运行或等待运行)进程的个数,和核心数有关
            b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
    memory:
            swpd: 交换内存的使用总量
            free:空闲物理内存总量
            buffer:用于buffer的内存总量
            cache:用于cache的内存总量
    swap:
             si:从磁盘交换进内存的数据速率(kb/s)
             so:从内存交换至磁盘的数据速率(kb/s)
    io:
             bi:从块设备读入数据到系统的速率(kb/s)  
             bo: 保存数据至块设备的速率
    system:
            in: interrupts 中断速率,包括时钟
            cs: context switch 进程切换速率
    cpu:
            us:非内核层的CPU使用状态
            sy:内核层CPU使用状态
            id:闲置的状态
            wa: 等待I/O所耗费的CP
            st:被虚拟机所盗用的CPU使用状态(2.6.11内核后才支持)
    
    • 选项:
    -s: 显示内存的统计数据
    

    14.iostat:统计CPU和设备IO信息

    eg:iostat 1 10
    

    15.pmap命令:进程对应的内存映射

    pmap [options] pid [...]

    -x: 显示详细格式的信息
    
    eg:pmap 1
    

    另外一种实现:

    cat /proc/PID/maps
    

    16. glances命令:(系统监控工具)EPEL源

    glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]

    • 常用选项:
    -b: 以Byte为单位显示网卡数据速率
    -d: 关闭磁盘I/O模块
    -f /path/to/somefile: 设定输入文件位置
    -o {HTML|CSV}:输出格式
    -m: 禁用mount模块
    -n: 禁用网络模块
    -t #: 延迟时间间隔
    -1:每个CPU的相关数据单独显示
    
    • C/S模式下运行glances命令
    • 服务器模式:
    glances -s -B IPADDR
    IPADDR: 指明监听的本机哪个地址
    
    • 客户端模式:
    glances -c IPADDR
    IPADDR:要连入的服务器端地址
    

    17.dstat命令:(系统监控工具)系统资源统计.代替vmstat,iostat

    dstat [-afv] [options..] [delay [count]]

    -c: 显示cpu相关信息
    -C #,#,...,total
    -d: 显示disk相关信息
    -D total,sda,sdb,...
    -g:显示page相关统计数据
    -m: 显示memory相关统计数据
    -n: 显示network相关统计数据
    -p: 显示process相关统计数据
    -r: 显示io请求相关的统计数据
    -s: 显示swapped相关的统计数据
    
     --top-cpu:显示最占用CPU的进程
     --top-io: 显示最占用io的进程
     --top-mem: 显示最占用内存的进程
     --top-latency: 显示延迟最大的进程
    

    18. kill命令:(进程管理工具)

    向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写

    (1)显示当前系统可用信号: kill –l,trap -l

    Paste_Image.png

    (2)常用信号:man 7 signal

    1) SIGHUP: 无须关闭进程而让其重读配置文件
    2) SIGINT: 中止正在运行的进程;相当于Ctrl+c
    3) SIGQUIT:相当于ctrl+\
    9) SIGKILL: 强制杀死正在运行的进程
    15) SIGTERM:终止正在运行的进程
    18) SIGCONT:继续运行
    19) SIGSTOP:后台休眠
    

    (3)指定信号的方法:

    1.信号的数字标识:1, 2, 9
    2.信号完整名称:SIGHUP (3) 信号的简写名称HUP
    

    (4)按PID:kill [-SIGNAL] pid …

    kill –n SIGNAL pid;kill –s SIGNAL pid
    

    (5)按名称:killall [-SIGNAL] comm…

    Paste_Image.png

    (6)按模式:pkill [options] pattern

    -SIGNAL
    -u uid: effective user,生效者
    -U uid: real user,真正发起运行命令者
    -t terminal: 与指定终端相关的进程
    -l: 显示进程名(pgrep可用)
    -a: 显示完整格式的进程名(pgrep可用)
    -P pid: 显示指定进程
    

    相关文章

      网友评论

          本文标题:进程管理

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