进程监控类命令

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

本篇全是命令介绍,笔者把各个命令的都实验一遍,给同学们看看.

 

一. PSTREE命令

pstree - display a tree of processes

选项:

  -p 显示进程的PID

  -T 隐藏线程信息

  -u 显示切换过程

  -H PID 高亮显示指定PID进程的父进程

示例:

 进程监控类命令 Linux 第1张

 

 

 进程监控类命令 Linux 第2张

 

 

 进程监控类命令 Linux 第3张

 

 

 进程监控类命令 Linux 第4张

 

 

 

 

二. PS命令

ps - report a snapshot of the current processes.

选项:

PS有三种风格的选项写法:

  BSD风格写法 ps aux

  UNIX风格写法 ps -ef

  GNU风格写法 ps --pid PID

 

BSD风格选项:

  a 显示所有与终端有关的进程

  x 显示所有与终端无关的进程

  u 显示进程所有者相关的信息

  f 命令列把相关的进程显示成进程树

  k 对属性进行排序,属性前加上-表示倒序

  o 选择显示的字段pid cmd psr ni(nice) pri rtprio tid class %cpu %mem user ruser euser等等

  euser 表示显示有效用户字段

  ruser 表示显示真是用户字段

  psr 表示显示CPU与进程的绑定关系

  pcpu CPU的利用率

  ppid 父进程的PID

  pri 系统优先级值

  ni NICE优先级

  rtprio 表示显示实时优先级

  L 显示支持的字段

UNIX风格选项:

  -e 显示所有进程

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

  -F 显示更完整格式程序信息

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

  -u userlist 指定有效用户ID

  -U userliset 指定真正用户ID

  -g gid 指定有效的gid

  -G gid 指定真的很的gid

  -p PID 显示指定pid的进程

  -t TTY 显示指定TTY终端的进程,相当于BSD风格的t选项

GNU风格选项:

  --sort 等同于BSD风格的k选项,对指定属性进行排序,-表示倒序显示

  --ppid 等同与UNIX风格的-p选项,指定显示某PID的进程

 

字段介绍:

  USER 那个用户执行的命令

  PID 进程的PID

  %CPU CPU占用的百分比

  %MEM 内存占用百分比

  VSZ 是申请的内存(占用的虚拟内存大小)

  RSS 是实际使用内存(指的是常驻内存中的大小.不包括交换分区中的)

  TTY 哪个终端启动的

  STAT 状态信息

  START 什么时间启动的

  TIME 使用时间片的累计值

  COMMAND 命令

    带中括号的表示内核的线程

  PPID 父进程的PID

  C CPU的占用百分比

  SIIME 启动时间

  PSR 运行在哪个CPU核心上

 

 

STAT进程状态:

  R 运行态

  S (大写S)可打断的睡眠态 interruptable sleeping

  D 不可打断的睡眠态 uninterruptable sleeping

  T 停止态stopped

  Z zombie僵尸态

 

  s (小写s)会话的发起者,子进程的创建者

  + 前台进程,运行在终端上的并且占据命令提示符的

  I 空闲内核线程(大写i)

  l 多线程进程(小写的L)

  < 高优先级进程

  N 低优先级进程

示例:

 进程监控类命令 Linux 第5张

 

 

 进程监控类命令 Linux 第6张

 

 

 进程监控类命令 Linux 第7张

 

 

 进程监控类命令 Linux 第8张

 

 

 进程监控类命令 Linux 第9张

 

 

 进程监控类命令 Linux 第10张

 

 

 进程监控类命令 Linux 第11张

 

 

 

 

EXAMPLES

       To see every process on the system using standard syntax:

          ps -e

          ps -ef

          ps -eF

          ps -ely

 

       To see every process on the system using BSD syntax:

          ps ax

          ps axu

       To print a process tree:

          ps -ejH

          ps axjf

       To get info about threads:

          ps -eLf

          ps axms

       To get security info:

          ps -eo euser,ruser,suser,fuser,f,comm,label

          ps axZ

          ps -eM

       To see every process running as root (real & effective ID) in user format:

          ps -U root -u root u

       To see every process with a user-defined format:

          ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

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

          ps -Ao pid,tt,user,fname,tmout,f,wchan

 

 

三. PRTSTAT命令

prtstat PID 显示指定PID进程的相信信息

 

示例:

 进程监控类命令 Linux 第12张

 

 

 

四. nice命令

nice命令只能调整非实时优先级

nice的调整优先级的范围是-20~19,对应的系统优先级就是100~139

 

nice  -n  #  COMMAND 以指定的优先级来启动进程

  选项-n 最好不要省略

普通用户只能往后调整优先级,root即可以提高优先级,也可以降低优先级

 进程监控类命令 Linux 第13张

 

 

 进程监控类命令 Linux 第14张

 

 

 

五. renice命令

renice 同样也只能调整非实时优先级,

renice只能调整正在运行的进程的优先级

renice的调整范围还是-20~19,即使超出了也不会报错,但是最大是19

 

renice -n # PID 重新调整指定PID进程的优先级

  选项-n  可以省略

 进程监控类命令 Linux 第15张

 

 

 进程监控类命令 Linux 第16张

 

 

 

 

六. pgrep命令

 

pgrep [options] pattern

 

选项:

-u uid 根据UID查询进程,UID是指生效用户的UID

-U uid 根据UID查询进程,UID是指真正进程发起者的UID

-t 终端 根据指定终端查找进程

-l 显示出进程名

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

-P PID 限制指定PID进程的子进程

 

示例:

 进程监控类命令 Linux 第17张

 

 

 

 

 

七. pidof命令

根据进程名查找进程的PID

 

pidof   [OPTION]   COMMAND

选项:

  -x 根据脚本名称查找PID

 

示例:

 进程监控类命令 Linux 第18张

 

 

 

八. uptime命令

负载查询

系统启动时长

空闲进程的总时长

当前时间

当前上线人数

系统平均负载

CPU的个数*3   这个数字超过5就很忙了

 

 进程监控类命令 Linux 第19张

 

 

 

 

九. mpstat命令

详细统计了CPU的使用情况,

mpstat # ##   可以每#秒刷新一下,一共统计##

 

 进程监控类命令 Linux 第20张

 

 

 

十. top命令

动态追踪进程信息

选项:

-d # 指定刷新间隔为#

-n # 指定刷新次数为#

-b 以批次的方式显示

交互式命令:

M 按照内存排序

P 按照CPU排序

T 按照时间片累计进行排序

l 显示或隐藏top的第一行

t 显示或隐藏top的第二行第三行

汇总显示CPU还是分开显示CPU核心

m 显示或隐藏TOP的第四行第五行

q 退出

s 调整刷新间隔

k 终止进程

W 另存为文件

 

top - 05:45:41 up 1 day,  8:54,  1 user,  load average: 0.00, 0.00, 0.00

# 当前时间        运行时长  当前登录用户数    平均负载  过去1分钟 5分钟 15分钟的平均队列长度

 

Tasks: 181 total,   1 running, 180 sleeping,   0 stopped,   0 zombie

#    一共的进程数   正在运行数  睡眠进程数    停止进程数    僵死进程数

 

%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

# 用户空间   系统空间  NICE    空闲     等待IO  硬件中断  软件中断  被虚拟程序偷走的

 

MiB Mem :    957.1 total,    147.3 free,    211.6 used,    598.1 buff/cache

# 总内存大小 空闲内存大小  已使用内存   用于缓冲和缓存的内存空间

 

MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.    592.1 avail Mem

#     总交换空间 空闲交换空间    已使用交换空间   可用内存空间

 

 进程监控类命令 Linux 第21张

 

 

 

 

十一. HTOP命令

增强版的top命令,需要额外安装.而且最最重要的,竟然支持鼠标操作.而且还支持搜索

-d # 指定刷新间隔

-u USERNAME 仅显示指定用户的进行

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

 

-h   人性化显示

-m M为显示单位

-g G为显示单位

 

交互式选项:

H 显示或隐藏线程

K 显示或隐藏内核线程,默认是隐藏的

P 以占用CPU百分比排序

M 以占用内存百分比排序

T 以使用时间片累计时长排序

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

s 追踪进程发起的系统调用

t 以树状结构显示进程父子关系或者使用F5

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

 进程监控类命令 Linux 第22张

 

 

 

 

看到有没有眼前一亮的感觉.真的太好用了.推荐大家使用安装,资源管理的三板斧不是白叫的.

 

十二. free命令

显示交换分区和内存空间的使用情况

选项:

-h 人性化显示

-m M为单位显示

-g G为单位显示

-b 以字节为单位显示

-o 隐藏不显示cache/buffer,centos6及以前版本有效

-s # 指定刷新间隔

-c  # 指定刷新次数

 进程监控类命令 Linux 第23张

 

 

 进程监控类命令 Linux 第24张

 

 

 进程监控类命令 Linux 第25张

 

 

 进程监控类命令 Linux 第26张

 

 

 

 

 

 

十三.PMAP命令

pmap PID 查看指定进程的物理内存映射表

 进程监控类命令 Linux 第27张

 

 

 

 

 

pmap命令实际上就是调用了/proc/PID/maps文件的内容.只不过这个文件不太好理解.使用pmap命令来简化查看过程

 

 

十四.strace命令

stracem COMMAND 用来追踪COMMAND命令执行过程中产生的系统调用

 

 进程监控类命令 Linux 第28张

 

 

 

 

十五.ltrace命令

ltrace COMMAND 查看COMMAND命令在执行时调用了那些库文件

 

 进程监控类命令 Linux 第29张

 

 

 

 

straceltarce建议好好学学,避免成为背锅侠

 

十六.vmstat命令

查看虚拟内存的情况

 

选项:

      vmstat # ##  间隔#秒刷新一次   一共显示##

      -s 汇总

 进程监控类命令 Linux 第30张

 

 

 

 

字段介绍:

procs

r 等待运行的进程个数,也就是CPU等待运行的队列长度

b 处于不可中断睡眠的进程个数,被阻塞的任务队列的长度.如果这个数字很大,可能等待IO数很大

 

memory

swpd 交换内存使用的总量,如果这个swpd的有使用,或者有增长趋势就说明内存不够用了.

free 空闲的内存总量

buffer 用于缓冲内存总量

cache 用于缓存内存总量

 

swap

   si: Amount of memory swapped in from disk (/s).从磁盘中交换进内存的内存量,参照物是内存

   so: Amount of memory swapped to disk (/s).从内存中交换至磁盘的内存量,参照物是内存

 

 

io

bi: Blocks received from a block device (blocks/s).以内存为参照物,从磁盘写入到内存

bo: Blocks sent to a block device (blocks/s).以内存为参照物,从内存输出到磁盘

 

system

in 平均每秒钟的中断次数 interrupt

cs 进程切换速率 context switch

 

cpus

us 用户空间中进程占用CPU的百分比

sy 内核占用CPU的百分比

id 空闲时段消耗的CPU百分比

wa 消耗在等待IO操作完成时消耗CPU的百分比

steal 虚拟程序(偷走的)消耗的cpu百分比

 

 备注:vmstat命令也是通过查看/proc目录下内核输出的参数来统计各个进程的相关数据

 

 

十七.IOSTAT命令

iostat #  ## 指定刷新间隔为#,指定刷新次数##

选项:

-c 仅显示CPU统计信息

-d 仅显示硬盘统计信息

-x 显示更加详细的统计信息,包括CPU和硬盘的

-k K为单位显示

-m M为单位显示

字段介绍:

kB_read/s 读的速率

kB_wrtn/s 写的速率

kB_read 读的总量

kB_wrtn 写的总量

 进程监控类命令 Linux 第31张

 

 

 进程监控类命令 Linux 第32张

 

 

 进程监控类命令 Linux 第33张

 

 

 

 

 

十八.DSTAT命令

dstata命令默认是每秒刷新一次的.带颜色显示.同时强大到没有朋友的工具

dstat # ## 指定刷新时间为#,指定刷新次数为#

选项:

  -c 仅显示CPU信息

-C # 显示在哪个CPU核心上的信息

-d 仅显示硬盘信息

-n 仅显示网络流量信息

-g 仅显示内存页信息

-y 显示系统有关信息,包括中断和进程切换速率

-i 显示软硬中断

-m 显示内存相关

-p 显示进程统计信息

-r 显示IO请求信息

-s 显示swap信息

-t 输出当前时间

-v 等同与vmstat输出结果

--tcp 显示tcp相关数据

--udp 显示Udp相关数据

--raw 显示raw相关数据

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

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

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

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

示例:

 进程监控类命令 Linux 第34张

 

 

 进程监控类命令 Linux 第35张

 

 

 进程监控类命令 Linux 第36张

 

 

 

十九.IOTOP命令

前线一些工具都是一些综合类型的工具,什么都能监控,单有好像专一了又不太满足需求,iostat命令,只能查看到磁盘的读写很高,但是就是不知道哪个程序带来的大IO.这个款专一好男人的工具iotop

iotop命令可以不停的刷新显示当前那些进程频繁读写.放张图片看看

第一行是磁盘的读写的总速率

第二行是实际产生的读写速率

第三行参数如下:

TID 线程ID,这里默认的TID,可是使用交互命令p切换成PID的显示

PRIO 优先级,

USER 进程发起者

DISK READ 磁盘读速率

DISK WRITE 磁盘写速率

SWAPIN 交换分区写入速率

IO IO等待的百分比

 进程监控类命令 Linux 第37张

 

 

 

有一个很有意思的设定,第三行上有一个<或者>,这说明正在以这一行进行排序

  大于号表示降序序排序

  小于号表示升序排序

可以使用r键进行切换

 

交互式选项:

leftright方向键 可以改变排序列

r 方向排序

o 只实际上有IO请求的线程

p PIDTID之间进行切换,默认是TID显示

i 改变线程或进程的优先级

q 退出

 

选项:

-o 只显示正在产生IO请求的进程

-b 以批形式显示,非交互式模式,主要用作与记录在文件

-t 加上时间戳,主要用作记录日志

-n # 需要结合-b一起使用,显示几批次,同样主要用来记录日志,如果不指定# 表示无限次

-d # 指定刷新间隔,默认刷新是1

-p PID 指定监控的进程

-u USER 指定监控哪个用户的进程

-P 以进程的方式显示,默认是线程TID

  -q 只在第一次检测时显示列名和IO汇总,主要用于记录日志

  -qq 永远不显示列名,但是还显示IO汇总,主要用作记录日志

  -qqq 列名和IO汇总都不显示,主要用作记录日志

 

示例

 进程监控类命令 Linux 第38张

 

 

 进程监控类命令 Linux 第39张

 

 

 进程监控类命令 Linux 第40张

 

 

 进程监控类命令 Linux 第41张

 

 

 进程监控类命令 Linux 第42张

 

 

 进程监控类命令 Linux 第43张

 

 

 

 

 

 

 

 

 

二十.IFTOP命令

监控网络链接和流量

选项:

  -n 以数字方式显示

 进程监控类命令 Linux 第44张

 

 

 

 

二十一.NLOAD命令

监控网络链接和流量

选项:

  -t # 指定刷新间隔

  -u {h|b|k|m|g|H|B|K|M|G} 指定显示单位

    h:auto   b:Bit/s   k:kBit/s   m:mBit/s   g:gBit/s

    H:auto   B:Byte/s   K:kByte/s   M:mByte/s  G:gByte/s

 

 进程监控类命令 Linux 第45张

 

 

 

 

 

 

二十二.LSOF命令

    lsof:list open files    查看当前系统正在使用的文件,在linux中一切皆文件,所以通过lsof命令不仅可以查看正在使用的普通文件,还可以访问套接字等等,无比强大的工具.
    
    查看当前系统文件的工具,跟踪某个进程正在使用哪个文件

    可以利用losf恢复已经删除的文件,前提这个文件正在访问
    选项:
        -a                列出打开文件的进程
        -c    COMMAND        列出指定进程打开的文件,这里跟的是进程名
        -g    GID            列出GID用户的进程详情
        -d     文件号        列出占用该文件号的进程
        +d    目录        列出目录下被打开的文件
        +D    目录        递归列出目录下被打开的文件
        -n    目录        列出使用NFS的文件
        -i    条件        列出符合条件的进程
                            4    显示IPV4的进程
                            6    显示ipv6的进程
                            :80    显示占用80端口的进程
                            @IPADDR    显示和IPADDR链接的进程
        -p  PID            列出指定PID进程所打开的文件
        -u    UID            列出UID用户的进程锁使用的文件
        -n                不反向解析
}

 

 

 进程监控类命令 Linux 第46张

 

 

 进程监控类命令 Linux 第47张

 

 

 进程监控类命令 Linux 第48张

 

 

 进程监控类命令 Linux 第49张

 

 

 

小技巧:

利用lsof找回误删除且正在被打开的文件.

第一步,现在终端持续打开一个文件,模拟这个文件正在被使用

 

第二步,在终端二上删除正在使用的文件

 

第三步,使用lsof查找刚才删除的文件是哪个程序使用的

 

第四步,进入/proc/PID/fd目录中,其中PID就是刚才查找到使用误删除文件进程的PID

 

第五步,就会发现其中的3号文件描述符就是指向刚才误删除的文件.利用重定向恢复

 

 

文件已经找回来了,只有某个文件正在被使用才能找回来,因为删除文件后,系统不会立即释放类删除的空间.

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄