Linux进程管理工具及作业控制(马哥笔记)

Linux进程查看及管理的工具:pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup

内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能
Process:运行中的程序的一个副本
存在生命周期
linux内核存储进程信息的固定格式:task struck
多个任务的task struck组件的链表:task list

  • 进程创建
init     
    父子关系     
    进程:都由其父进程创建       
        fork(),clone()
进程优先级:
    0-139:
        1-99:实时优先级,数值越大, 优先级越高   
        100-139:静态优先级,数值越小,优先级越级高
    Nice值:-20,19,依次对应100-139      
    
    Big O
        O(1),O(logn),O(n),O(n^2),O(2^n)
进程内存:
    Page Frame:页框,用于存储页面数据
    MMU:Memory Management Unit负责转换线性和物理地址
    
IPC:Inter Process Communication 
    同一主机上:
        signal
        shm:shared memory 
        semerpher
    不同主机上:
        rpc:remote procecure call
        socket
  • Linux内核:抢占式多任务
进程类型:
    守护进程:daemon,在系统引导过程中启动的进程,跟终端无关   
    用户进程:跟终端相关,通过终端启动的进程
        注意:也可把在前台启动的进程送至后台,以守护模式运行  
进程状态:
    运行态:running
    就绪态:ready
    睡眠态:
        可中断:interruptable
        不可中断:uninterruptable
    停止态:暂停于内存中,但不会被调度,除非手动启动之
    僵死态:zombie 

进程的分类:
    CPU-Bound 
    IO-Bound

I/O:分时复用
  • linux进程查看及管理工具:pstree, ps, pidof,pgrep, top, htop, glance, pmap, vmstat, dstat, kill,pkill, job, bg, fg, nohup

pstree命令

  • pstree 命令:

    pstree - display a tree of processes

  • ps: process state

    ps - report a snapshot of the current processes
    Linux系统各进程的相关信息均保存在/proc/PID 目录下的各文件中

    ps [OPTION]...
    选项:支持两种风格

常用组合:aux   
    u:以用户为中心组织进程状态信息显示  
    a:与终端无关的进程   
    x:与终端无关的进程  
    
    [root@danran ~]# ps aux   
    USER     PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND   

        PID:进程号
        %CPU:CPU使用率
        %MEM:内存使用率
        VSZ:Virtual memory Size 虚拟内存集 
        RSS:ReSident Size:常驻内存集,一般小于虚拟内存集  
        tty:终端
        STAT:进程状态   
            R:running
            S:interruptable sleeping
            D:uninteruptable sleeping
            T:stopped
            Z:zombie
    
            +:前台进程
            l:多线程进程
            L:内存分页并带锁
            N:低优先级进程
            <:高优先级进程
            s:session leader,会话子进程发起者 
    START:启动时间  
    TIME:运行占用CPU的累计时长
    COMMAND:表示启动进程的命令

常用组合:-ef
    -e:显示所有进程
    -f:显示完整格式的程序名称   

常用组合:-ejH
    以进程层级格式显示进程相关信息(树状显示)
    
    -j:BSD格式的任务格式   
    -H:显示树状结构   
    j :BSD风格的任务控制格式   

常用组合:-eFH    
    -F:显示网整格式的进程信息
    -H:以进程层级格式显示进程相关信息
    
常用组合:-axZ
    -Z:表示Selinux的安全上下文标签
    -a:显示所有进程
    -x:显示没有终端的进程
    
常用组合:-eo,axo
    -eo pid,tid class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
    axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
    
        ni:nice值
        pri:priority,优先级
        psr:processor,CPU
        rtprio:实时优先级   
        epid:表示真实用户
        ppid:父进程

pgrep

pgrep [options] pattern
pkill [options] pattern
    
    -u UID:指明有效用户的进程
    -U uid:指明真实用户的进程
    -t terminal:跟指定终端相关的进程
    -a:显示完整格式的进程名
    -l:显示进程名
    -P pid:显示其父进程为此处指定进程的进程列表

pidof

根据进程名获取其PID

top

有许多内置命令

排序:
    P:以占据的CPU百分比;
    M:占据内存百分比
    T:累积占据CPU时长

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

选项:

-d #:指定刷新时间间隔,默认为3s
-b:以批次方式全部显示   
-n #:显示多少批次

栏位信息简介

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

htop

epel源下载安装

eg http://172.16.0.1/fedora-epel/7/x86_64
yum -y install htop

htop命令
    选项:
        -d #:指定延迟时间
        -u Username:仅显示指定用户的进程
        -s COLOMN:以指定字段进行排序
    命令
        s:跟踪选定进程的系统调用
        l:显示选定进程打开的文件列表
        a:将选定的进程绑定至某CPU核心   
        t:显示进程数
    注意:Fedora-EPEL源
  • Linux进程查看及管理的工具:pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup

vmstat命令

vmstat [options] [delay [count]]
    procs:
        r:等待运行的进程的个数
        b:处于不可中断睡眠态的进程个数,(被阻塞的队列的长度)
    memory:
        swpd:交换内存的使用总量
        free:空闲物理内存总量
        buffer:用于buffer的内存总量
        cache:用于cache的内存总量
    swap:
        si:数据进入swap中的数据速率(kb/s)
        so:数据离开swap中的数据速率(kb/s)
    io:
        bi:从块设备读入数据到系统的速率(kb/s)
        bo:保存数据至块设备的速率(kb/s)
    system:
        in:interrupts,中断速率
        cs:context switch,进程切换速率
    cpu:
        us:用户空间占据CPU的比率
        sy:内核空间占据CPU的比率
        id:空闲空间占据CPU的比率
        wa:等待IO完成所消耗的比率
        st:被虚拟化偷走的CPU比率   
选项:
    -s:显示内存统计数据

pmap(内存映射)

NAME
    pmap - report memory map of a process(内存映射表)

格式:
   pmap [options] pid [...]
        -x:显示详细格式的信息
    另外一种实现:
        cat /proc/PID/maps 

glances

epel源安装   
    http://172.16.0.1/fedora-epel/7/x86_64   epel源   
客户端和服务端都需要安装glances工具    

使用glances工具时需要关闭防火墙

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

内建命令:
    a Sort processes automatically 
    c Sort processes by CPU% 
    m Sort processes by MEM% 
    p Sort processes by name 
    i Sort processes by I/O rate 
    d Show/hide disk I/O stats 
    f Show/hide file system stats 
    n Show/hide network stats 
    s Show/hide sensors stats 
    y Show/hide hddtemp stats
    l Show/hide logs
    b Bytes or bits for network I/O
    w Delete warning logs
     x Delete warning and critical logs
    1 Global CPU or per-CPU stats
    h Show/hide this help screen
    t View network I/O as combination
    u View cumulative network I/O
    q Quit (Esc and Ctrl-C also work)

常用选项:
    -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
            IPADDRR:要连入的服务器端地址    

dstat

格式:
    dstat [-afv] [options..] [delay [count]]
选项:
    -c:显示cpu相关信息
        -C#,#,...,total单独显示指定Cpu的信息
    -d:显示disk读写速率等相关信息
        -D:total,sda,sdb...单独显示指定磁盘的信息 
    -g:显示page相关统计数据(换进换出)
    -i:显示统计的详细信息
    -l:仅显示load(负载)
    -n:显示network的相关统计数据 
    -m:只显示memory的相关统计数据 
    -p:显示process的相关统计数据
    -r:显示io请求相关的统计
    -s:显示swapped相关的统计数据
    
    --tcp:显示tcp协议相关统计数据
    --udp:显示udp协议的相关统计数据
    --socket:显示socket文件的统计数据
    --raw:裸套接字文件的统计数据
    --ipc:进程间通信的统计数据
    
    
    --top-cpu:显示最占用CPU的进程
    --top-io:显示最占用io的进程
    --top-mem:显示最占用内存的进程
    --top-lantency:显示延迟最大的进程
  • dstat 1 每秒刷新一次
total-cpu-usage:cpu使用状态
dsk/total:磁盘读写速率
net/total:网络收发速率  
paging:页面的换进换出速率
systea:中断和上下文切换的速率
  • dstat -D total,sda -C 0,total 显示sda磁盘,CPU0的详细信息
    Linux进程管理工具及作业控制(马哥笔记)_第1张图片

kill命令

向进程发送控制号,以实现对进程管理

显示当前系统可用信号
    kill -l
    man 7 signal
    
常用信号(SIGNAL):
    1)SIGHUP:无需关闭进程而让其重读配置文件
    2)SIGINT:中止正在运行的程序,相当于Ctrl+c
    9)SIGKILL:杀死正在运行的进程
    15)SIGTERM:终止正在运行的进程
    18)SIGCOUT:处于停止态的继续运行
    19)SIGSTOP:让进程处于停止状态

指定信号的方法:
    1) 信号的数字标识:1,2,9
    2) 信号完整名称:SIGHUP
    3) 信号的简写名称:HUP

向进程发信号:
    kill [-SIGNAL] PID...
        kill -15  2440  杀死ID号为2440的进程
        kill -SIGINT 2440 

终止“名称”之下的所有进程
    killall [-SIGNAL] Program

Linux作业控制

前台作业:通过终端启动,且启动后一直占据终端
后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端)

如何让作业运行于后台:
    1):运行中的作业   
        Ctrl+z
    2):尚未运行的作业
        COMMAND &
    此类作业虽然被送往后台运行,但其依然与终端相关;如果希望送往后台后,剥离与终端的关系:
        nohup COMMAND &
    
    查看当前终端所有作业:
        jobs
    
    作业控制:
        fg [[%]JOB_NUM]:把指定的后台作业调回前台(JOB_NUM为后台作业ID)
        bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行
        kill [[%]JOB_NUM]:中止指定作业

并行运行

同时运行多个进程,提高效率

方法1
    vim all.sh
        f1.sh & <==> ping 127.0.0.1 & 
        f2.sh & <==> ping 192.168.198.134 &
        f3.sh &
方法2
    (f1.sh &);(f2.sh &);(f3.sh &)
    (ping 127.0.0.1 &);(ping 192.168.198.134 &)
方法3
    { f1.sh & f2.sh & f3.sh & }
    { ping 127.0.0.1 & ping 192.168.198.134 & }

进程优先级调整

静态优先级:100-139

进程默认启动时的nice值为0,优先级为120
    nice命令:(启动进程时指定nice值)
        nice [OPTION] [COMMAND [ARG]...]
        nice -n 5 htop  htop进程启动的nice值为5,优先级为125,数值越小,优先级越高 
    nice,renice
    
    renice命令(修改以启动进程的nice值)
         renice [-n] priority [-gpu] identifier...
         renice -n 2 htop 
 
    查看:
        ps axo pid,comm,ni 

未涉及的命令:sar,tsar,iostat,iftop

你可能感兴趣的:(Linux进程管理工具及作业控制(马哥笔记))