在我们了解进程以后,我接下来要掌握进程的管理工具如:pstree , ps , pgrep , pidof , top ,htop , glance , pmap , vmstat , dstat , kill , pkill , uptime 等;Linux 系统各进程的相关信息均保存在/proc/PID 目录下的各文件中;


 

一,pstree


pstree:是以树状的形式来显示进程的关系;

pstree [option]

     -p : 连进程编号一块显示出来;

wKioL1fSaArR2uEvAABQNAXESYQ615.png-wh_50

    -a : 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
wKioL1fSacGTqHjjAABEjaBCup8465.png-wh_50


二,ps


ps:查看进程的信息和搜索进程;

ps [OPTION]...

支持三种类型选项的格式:

    GUN 选项如--help ;

    UNIX 选项(以一个“-“开头的选项)如-A -e:

        选项:        

            -e:  显示所有进程

            -f:  显示完整格式程序信息

            -F:  显示更完整格式的进程信息

            -H:  以进程层级格式显示进程相关信息

        常用组合:-ef , -eFH

wKioL1fSp7nArSfwAABD8xEnTb0064.png-wh_50

wKiom1fSp7mzC84fAAAq8_56Q2Q540.png-wh_50

    BSD 选项(直接用字母开头的)如a:

        默认显示当前终端中的进程

            a :显示所有终端中的进程

            x :显示不链接终端的进程

            u :显示进程所有者的信息

            f :显示进程的父进程

            l :长格式输出

            o :属性…  选项显示定制的信息:

                pid 、comm 、%cpu 、%mem 、state 、tty 、euser(执行用户) 、ruser(真正用户)

        常用组合:aux,axl

wKiom1fSoZ2g-nmVAABKj14XDbY838.png-wh_50

wKiom1fSoZ6wFj6oAABGHJsGfnw151.png-wh_50

常用组合:自定义:

    -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm,等等

    axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm,等等

wKiom1fSqajzuGQVAAASyUVEzLU948.png-wh_50

wKioL1fSqanTG1KAAAAZaSDTM5k588.png-wh_50

ps查看进程输出内容的解释:

USER
用户名
UID用户ID(user ID)
PID进程ID(Process ID)
PPID父进程的进程ID(Parent Process id)
SID会话ID(Session id)
%CPU进程的CPU占用率
%MEM进程的内存占用率
VSZVirtual memory SiZe ,虚拟内存集,线性内存(虚拟内存的大小)
RSSReSident Size,  常驻内存集(实际内存的大小)
TTY与进程关联的终端
STAT进程状态
  STAT
R :running(运行)
S: interruptable sleeping(睡眠)
D: uninterruptable sleeping(不可中断)
I:空闲
T: stopped(终止)
Z: zombie(僵死)
+:  前台进程
l:  多线程进程
N :低优先级进程
<:  高优先级进程
s: session leader ,会话(子进程)发起者
START进程启动时间和日期
TIME进程使用的总CPU时间
COMMAND正在执行的命令行命令
NI
优先级(Nice)
PRI进程优先级编号(Priority)
WCHAN进程正在睡眠的内核函数名;该函数的名称是从/root/system.map文件中获得的
FLAGS与进程相关的数字标识


三,pgrep

pgrep:按预定义的模式搜索进程;

pgrep [options] pattern

    -u uid: effective user ,真正有效者

wKiom1fStRKQguhMAAAdJnJtnFk433.png-wh_50

    -U uid: real user ,真正发起运行命令者

wKioL1fStRzjig6UAAAIVbtf-FU949.png-wh_50

    -t terminal:  与指定终端相关的进程

wKiom1fStSnwUGr4AAAJ6p6-pWk736.png-wh_50

    -l:  显示进程名

wKioL1fStTuCTq_eAAAJd14PGlU648.png-wh_50

    -a:  显示完整格式的进程名

wKiom1fStUqy51jmAAAUQGF2PrE757.png-wh_50

    -P pid:  显示指定进程的子进程



四,pidof


pidof:是Linux系统中用来查找正在运行进程的进程号

按确切的程序名称:/sbin/pido

如:pidof bash

wKiom1fTiPijco8hAAAILH1tFw0107.png-wh_50


五,top


top :动态的显示了系统的状况;

选项:

    -d #:  指定刷新时间间隔,默认为3秒

    -b:  以批次方式

    -n #:  显示多少批次

有许多内置命令:

    排序:

        P :以占据的CPU 百分比,%CPU

        M :占据内存百分比,%MEM

        T :累积占据CPU 时长,TIME+

    首部信息显示:

        uptime 信息:l 命令

        tasks 及cpu 信息:t 命令

        cpu 分别显示:1 ( 数字)

        memory 信息:m 命令

    退出命令:q

    修改刷新时间间隔:s

    终止指定进程:k

    保存文件:W(保存在 /root/.toprc)

top命令栏位信息简介:

wKioL1fTmZfR05ySAAAqGJmhxnA727.png-wh_50

第一行: 任务队列信息:

13:06:34

当前时间

up 55 min

系统运行时间,格式为时:分

1 user

当前登录用户数

load average: 0.00, 0.01, 0.05

系统负载,即任务队列的平均长度, 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值;

第二行:进程的信息(Tasks):

Tasks: 363 total

进程总数

2 running

正在运行的进程数

361 sleeping

睡眠的进程数

0 stopped

停止的进程数

0 zombie

僵尸进程数

第三行:CPU的信息 (%CPU(s)):

  0.3 us

用户空间占用CPU百分比

0.7 sy

内核空间占用CPU百分比

0.0 ni

用户进程空间内改变过优先级的进程占用CPU百分比

99.0 id

空闲CPU百分比

0.0 wa

等待输入输出的CPU时间百分比

0.0 hi

硬中断

0.0 si

软中断(模式切换)
0.0 st
虚拟机偷走的时间

第四行:内存信息(KiB Mem):

 1001332 total

物理内存总量

103192 used

使用的物理内存总量

768632 free

空闲内存总量

129508 buff/cache

用作内核缓存的内存量

第五行:交换信息(KiB Swap):

 4195320 total

交换区总量

0 used

使用的交换区总量

4195320 free

空闲交换区总量

761356 avail

缓冲的交换区总量。 内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。


六,htop


htop 命令:(top的增强版)需从Fedora-EPEL 源安装:http://10.1.0.1/fedora-epel/7/x86_64/

wKioL1fToLHwYlZPAAAXL877N74080.png-wh_50

wKiom1fToLHAOQX0AABHOvk_CZo264.png-wh_50

wKioL1fToLLixzrcAAAtkSjgpsg847.png-wh_50

wKioL1fToLLSR9ZrAACzXfJrErI003.png-wh_50

    选项:

        -d #:  指定延迟时间;

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

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

    子命令:

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

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

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

        t:  显示进程树


七,vmstat


vmstat 命令:虚拟内存信息

    vmstat [options] [delay [count]]

    vmstat 2 5

wKiom1fTpnehCF5bAAAila7N9U0747.png-wh_50

procs  r
等待运行的进程的个数,和核心数有关
  b处于不可中断睡眠态的进程个数( 被阻塞的队列的长度)
memoryswpd交换内存的使用总量
free空闲物理内存总量
buffer用于buffer 的内存总量
cache用于cache 的内存总量
swap
si从磁盘交换进内存的数据速率(kb/s)
so从内存交换至磁盘的数据速率(kb/s)
iobi从块设备读入数据到系统的速率(kb/s)
bo保存数据至块设备的速率
systemininterrupts,  中断速率,包括时钟
cscontext switch,  进程切换速率
cpuusTime spent running non-kernel code, 用户CPU时间
syTime spent running kernel code, 系统CPU时间
idTime spent idle, 空闲CPU时间
waTime spent waiting for IO,等待IO CPU时间
stTime stolen from a virtual machine,虚拟机偷走的时间

    选项:

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

wKioL1fTptnSbcT4AABFACjU7xg514.png-wh_50


八,pmap


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

pmap [options] pid [...]

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

    #pmap 1692

wKiom1fTqp_TZQSeAABYv4gOxMY206.png-wh_50

    另外一种实现:

    # cat /proc/1692/maps

wKiom1fTqsOi9FYcAABr8MavFSE879.png-wh_50


九,glance


glances 命令:系统资源监控, (需从EPEL源中下载)

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

wKioL1fTs1mRwDBNAACA4KkdZF4229.png-wh_50

内建命令:

a
Sort processes automaticallybBytes or bits for network I/O
c
Sort processes by CPU%d

Show/hide disk I/O stats

f

Show/hide file system stats

h

Show/hide this help screen

i

Sort processes by I/O rate

l
Show/hide logs
m

Sort processes by MEM%

n

Show/hide network stats

p

Sort processes by name

q

Quit (Esc and Ctrl-C also work)

s

Show/hide sensors stats

t

View network I/O as combination

u

View cumulative network I/O

y

Show/hide hddtemp stats

1

Global CPU or per-CPU stats

mw

Delete warning logs

常用选项:

    -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:  指明监听的本机哪个地址

wKioL1fTszzz6Oi3AAAKMhUp2WI160.png-wh_50

客户端模式:

    glances -c IPADDR

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

wKiom1fTs0bQegyOAAB1_NOVXcQ171.png-wh_50


十,dstat


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

    --udp

    --unix

    --raw

    --socket

    --ipc

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

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

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

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

wKiom1fTtnOitSv8AAA6xJe53Mw861.png-wh_50


十一,kill,pkill


kill 命令:

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

显示当前系统可用信号: kill -l

wKiom1fTyuGynkuTAABF7wFzG40529.png-wh_50

常用信号:man 7 signal

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

wKiom1fTyy_B9H5RAAAHqDUUXUA275.png-wh_50

    2) SIGINT:  中止正在运行的进程;相当于Ctrl+c

wKioL1fTyx2BIRaQAAA7bVtiqnc462.png-wh_50

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

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

    18) SIGCONT :继续运行

wKiom1fTywCwMvoXAABLHyLbGic888.png-wh_50

    19) SIGSTOP :后台休眠

wKioL1fTywnz_Kp_AABH5MyACFc530.png-wh_50

指定信号的方法:

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

    (2)  信号完整名称;SIGHUP

    (3)  信号的简写名称;HUP

进程管理工具

    按PID :kill [-SIGNAL] pid …

    按名称:killall [-SIGNAL] comm…

    按模式:pkill [options] pattern

        -SIGNAL

        -u uid: effective user ,生效者

        -U uid: real user ,真正发起运行命令者

        -t terminal:  与指定终端相关的进程

        -l:  显示进程名

        -a:  显示完整格式的进程名

        -P pid:  显示父进程为此处指定的进程的进程列表

wKiom1fTy2bhahykAABYD2bT7w0319.png-wh_50

wKioL1fTy2aiDSIGAABAvx0cBTQ972.png-wh_50


十二,uptime


uptime:查看当前系统负载情况;

wKioL1fTkBjR9fQ9AAAJaYgxau4151.png-wh_50

显示内容的信息:

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

系统平均负载:

    指在特定时间间隔内运行队列中的平均进程数 。

如果每个CPU 内核的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU 内核的任务数大于5,那么这台机器的性能有严重问题;

如果linux 主机是1个双核CPU 的话,当Load Average为6 的时候说明机器已经被充分使用了;