进程监控类命令
本篇全是命令介绍,笔者把各个命令的都实验一遍,给同学们看看.
一. 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的第二行第三行 1 汇总显示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命令在执行时调用了那些库文件
strace和ltarce建议好好学学,避免成为背锅侠
十六.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键进行切换
交互式选项: left和right方向键 可以改变排序列 r 方向排序 o 只实际上有IO请求的线程 p 在PID和TID之间进行切换,默认是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命令不仅可以查看正在使用的普通文件,还可以访问套接字等等,无比强大的工具.
小技巧: 利用lsof找回误删除且正在被打开的文件. 第一步,现在终端持续打开一个文件,模拟这个文件正在被使用
第二步,在终端二上删除正在使用的文件
第三步,使用lsof查找刚才删除的文件是哪个程序使用的
第四步,进入/proc/PID/fd目录中,其中PID就是刚才查找到使用误删除文件进程的PID
第五步,就会发现其中的3号文件描述符就是指向刚才误删除的文件.利用重定向恢复
文件已经找回来了,只有某个文件正在被使用才能找回来,因为删除文件后,系统不会立即释放类删除的空间. 来源:https://www./content-3-692001.html |
|