一、pidstat命令介绍
pidstat是sysstat工具中的一个命令,用于监控进程的cpu、内存、线程、IO及上下文切换等系统资源的占用情况。
格式:
pidstat [ options ] [ <interval> [ <count> ] ]
分别是 选项 时间间隔 采集次数
选项 | 含义 |
-u | 默认的参数,显示各个进程的cpu使用统计 |
-r | 显示各个进程的内存使用情况 |
-d | 显示各个进程的IO使用情况 |
-w | 显示各个进程的上下文切换情况 |
-t | 显示线程 |
-p | 指定进程号 |
-l | 显示命令名和所有参数 |
-C | 仅显示Command中包含匹配字符串的进程 |
-G | 显示符合匹配进程名字的进程 |
二、输出信息含义
• UID:用户id
• PID:进程id
• %user:表示用户进程所使用cpu的百分比
• %system:表示内核进程所使用cpu的百分比
• %guest:表示运行vCPU时所消耗的cpu时间百分比
• %wait:表示任务在等待运行时花费的cpu的百分比。
• %CPU:表示进程所使用cpu的百分比
• CPU:处理进程的cpu编号
• Command:进程对应的命令
注:运行pidstat不加任何选项,统计的信息为系统启动开始的各项统计信息
使用-d选项统计进程IO使用情况
• kB_rd/s:进程每秒从磁盘读取的数据量(以kB为单位)
• kB_wr/s:进程每秒向磁盘写入的数据量(以kB为单位)
• kB_ccwr/s:任务写入磁盘被取消的速率(以kB为单位)
• iodelay:任务的I/O阻塞延迟,以时钟周期为单位,包括等待同步块 I/O 和换入块 I/O 结束的时间
使用-w选项显示进程的上下文切换情况
• cswch/s :表示每秒自愿上下文切换的次数
• nvcswch/s :表示每秒非自愿上下文切换的次数
注:所谓自愿上下文切换,是指进程无法获得所需的资源导致的上下文切换。
而非自愿上下文切换,则是指进程由于cpu分配的时间片耗尽,被系统强制调度导致的上下文切换
使用-t和-p选项显示指定进程的线程
• TGID:主线程id
• TID: 线程id
使用-C和-G选项显示符合匹配的进程
二、losf命令介绍
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
1、lsof命令格式:
lsof [参数] [文件]
2、命令功能:
用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为 lsof 需要访问核心内存和各种文件,所以需要root用户执行。
lsof打开的文件可以是:
1.普通文件
2.目录
3.网络文件系统的文件
4.字符或设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.网络文件(例如:NFS file、网络socket,unix域名socket)
9.还有其它类型的文件,等等
3.命令参数:
-a 列出打开文件存在的进程
-c 列出指定进程所打开的文件
-g 列出GID号进程详情
-d 列出占用该文件号的进程
+d 列出目录下被打开的文件
+D 递归列出目录下被打开的文件
-n 列出使用NFS的文件
-i 列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p 列出指定进程号所打开的文件
-u 列出UID号进程详情
-h 显示帮助信息
-v 显示版本信息
4.使用实例
#列出所有打开的文件:
lsof
备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位
# 查看谁正在使用某个文件
lsof /opt
# 列出所有tcp 网络连接信息
lsof -i tcp
# 列出所有udp网络连接信息
lsof -i udp