zoukankan      html  css  js  c++  java
  • 进程监控类命令

    进程监控类命令

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

    一. PSTREE命令

    pstree - display a tree of processes

    选项:

      -p 显示进程的PID

      -T 隐藏线程信息

      -u 显示切换过程

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

    示例:

     

     

     

     

    二. 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 低优先级进程

    示例:

     

     

     

     

     

     

     

    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进程的相信信息

    示例:

     

    四. nice命令

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

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

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

      选项-n 最好不要省略

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

     

     

    五. renice命令

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

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

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

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

      选项-n  可以省略

     

     

    六. pgrep命令

    pgrep [options] pattern

    选项:

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

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

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

    -l 显示出进程名

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

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

    示例:

     

    七. pidof命令

    根据进程名查找进程的PID

    pidof   [OPTION]   COMMAND

    选项:

      -x 根据脚本名称查找PID

    示例:

     

    八. uptime命令

    负载查询

    系统启动时长

    空闲进程的总时长

    当前时间

    当前上线人数

    系统平均负载

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

     

     

     

    九. mpstat命令

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

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

     

     

    十. 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

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

     

     

     

    十一. HTOP命令

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

    -d # 指定刷新间隔

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

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

     

    -h   人性化显示

    -m M为显示单位

    -g G为显示单位

     

    交互式选项:

    H 显示或隐藏线程

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

    P 以占用CPU百分比排序

    M 以占用内存百分比排序

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

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

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

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

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

     

     

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

     

    十二. free命令

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

    选项:

    -h 人性化显示

    -m M为单位显示

    -g G为单位显示

    -b 以字节为单位显示

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

    -s # 指定刷新间隔

    -c  # 指定刷新次数

     

     

     

     

     

     

     

    十三.PMAP命令

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

     

     

     

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

     

     

    十四.strace命令

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

     

     

     

    十五.ltrace命令

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

     

     

     

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

     

    十六.vmstat命令

    查看虚拟内存的情况

     

    选项:

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

          -s 汇总

     

     

    字段介绍:

    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 写的总量

     

     

     

     

     

    十八.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 显示延迟最大的进程

    示例:

     

     

     

    十九.IOTOP命令

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

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

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

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

    第三行参数如下:

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

    PRIO 优先级,

    USER 进程发起者

    DISK READ 磁盘读速率

    DISK WRITE 磁盘写速率

    SWAPIN 交换分区写入速率

    IO IO等待的百分比

     

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

      大于号表示降序序排序

      小于号表示升序排序

    可以使用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汇总都不显示,主要用作记录日志

     

    示例

     

     

     

     

     

     

     

     

     

     

     

     

    二十.IFTOP命令

    监控网络链接和流量

    选项:

      -n 以数字方式显示

     

     

    二十一.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

     

     

     

     

     

    二十二.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                不反向解析
    }

     

     

     

     

     

    小技巧:

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

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

     

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

     

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

     

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

     

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

     

     

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

  • 相关阅读:
    Mybatis的动态sql以及分页
    Mybatis入门
    使用java代码操作Redis
    Redis安装和基本操作
    idea安装以及使用
    卢卡斯定理 Lucas (p为素数)
    三分/优选法(黄金分割法)求单峰函数极值
    缩点tarjan
    tarjan 求割点
    tarjan
  • 原文地址:https://www.cnblogs.com/fengciaimei/p/12864565.html
Copyright © 2011-2022 走看看