天天看点

12-linux进程管理工具2

前期基础知识准备,包括linux基础知识中的关于虚拟化的一些概念

    CPU:通过timeslice

    memory:通过线性地址

    IO:通过分时复用

了解一些进程查看工具,包括:pstree,ps,pgrep,pidof,top,htop

    htop命令(相对比较好用,这里特别再提一下):

        选项:

            -d #:指定延迟时间

            -u username:仅显示指定用户的进程

            -s colomn:以指定字段进行排序

        命令:

            s:跟踪选定进程的系统调用

            l:显示选定进程打开的文件列表

            a:将选定的进程绑定至某指定CPU核心

            t:显示进程树

        注意:需要使用fedora-epel源

这里对linux进程查看及管理工具的相关知识进行梳理的第二部分。

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:保存数据至块设备的速率

        system

            in:interrupts,中断速率

            cs:context switch,进程切换速率

        cpu:

            us 用户空间占比

            sy 内核空间占比

            id 空闲

            wa io完成所消耗时间比例 

            st 被偷走的时间比例

        选项

        vmstat -s 与cat /proc/meminfo的作用相似

            -s: 显示内存的统计数据

        pmap - report memory map of a process

            内存映射表:显示从线性地址到物理地址的映射

            pmap [options] pid [...]

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

            另一种实现

                cat /proc/PID/maps

    glances命令:

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

        内建命令

            a sort processes automatically

            l show/hide logs

            c sort processes by cpu%

            b bytes or bits for network i/o

            m sort processes by mem%

            w delete warning logs

            p sort processes by name

            x delete warning and critical logs

            d show/hide disk i/o stats

            h show/hide this help screen

            f show/hide file system stats 

            t view network i/o as combination

            n show/hide network stats 

            u view cumulative network i/o

            s show/hide sensors stats

            q quit(esc and ctrl-c also work)

            y show/hide hddtemp stats

        常用选项:

            -b:以byte为单位显示网卡数据速率

            -d:关闭磁盘i/o模块

            -f:/path/to/somefile 设置输入文本位置

            -o:(html/csv)输出格式

            -m:禁用mount模块

            -n:禁用网络模块

            -t #:延迟时间间隔

            -l:每个cpu的相关数据单独显示

        c/s模式下运行glances命令

            服务模式:

                glances -s -B IPADDR

                IPADDR:指明监听于本机哪个地址

            客户端模式:

                glances -c IPADDR

                IPADDR:要连入的服务器端地址

    dstat命令

        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相关的统计数据

            --tcp

            --upd

            --unix

            --raw

            --socket

            --ipc 进程间通信的统计数据

            --top-cpu:显示最占用cpu的进程

            --top-io:显示最占用io的进程

            --top-mem:显示最占用内存的进程

            --top-lantency:显示延迟最大的进程

    kill命令:

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

        显示当前系统可用信号

            kill -l列出支持发送的信号

            man 7 signal

            常用信号:

                1)sighup:无须关闭进程而让其重读配置文件

                2)sigini:中止正在运行的进程,相当于ctrl+c

                9)sigkill:杀死正在运行的进程

                15)sigterm:终止正在运行的进程

                18)sigcont:

                19)sigstop:

            指定信号的方法:

                (1)信号的数字标识:1,2,9

                (2)信号完整名称:sighup

                (3)信号的简写名称:hup

        向进程发信号:

            kill [-SIGNAL] PID...

        终止名称之下的所有进程

            killall [-SIGNAL] program

    linux的作业控制

    作业和进程不是一一对应的

    前台作业:通过终端启动,且启动后一直占据终端

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

    如何让走也运行于后台

        (1)运行中的作业

            ctrl+z

        (2)尚未启动的作业

            COMMAND &

        此类作业虽被送往后台运行,但其依然与终端相关。如果希望送往后台后,剥离与终端的关系

            nohup COMMAND &

        查看所有作业

            jobs:

        作业控制

            fg [[%]JOB_NUM]:把指定的后台作业调回前台

            bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行

            kill [%JOB_NUM]:终止指定的作业

进程优先级调整:

    静态优先级:100-139

    进程默认启动的nice值为0,优先级为120

    nice命令

        nice [OPTIONS] [COMMAND [ARG]...]

        nice,renice

    renice命令

        renice [-n] priority pid...

    查看

        ps,axo,pid,comn,ni

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