进程管理和性能相关工具-下篇
进程管理和性能相关工具:
接着上篇所写,如需了解上篇,点击跳转 进程管理和性能相关工具-上篇
上篇介绍的工具:
- pstree、ps、taskset、prtstat、nice、renice、pgrep、pidof、uptime、w、mpstat、top、htop、free、pmap、strace、ltrace
vmstat:
显示虚拟内存信息
vmstat [options] 刷新时间 [delay [count]]
-s 所有内存信息
2 5 2秒刷新一次,刷新5次结束
输出信息:
注意:
所有io不是以标题为准,都是基于参考内存,如:si指的是进入内存的速率,so是从内存出去的速率。磁盘的bi也是磁盘数据进入内存的速率,bo是从内存进入磁盘的速率
procs:
| 列 | 含义 |
|---|---|
| r | 可运行(正运行或等待运行)进程的个数,和核心数有关 |
| b | 处于不可中断睡眠态的进程个数(被阻塞的队列的长度) |
memory:
| 列 | 含义 |
|---|---|
| swpd | 交换内存的使用总量 |
| free | 空闲物理内存总量 |
| buffer | 用于buffer的内存总量 |
| cache | 用于cache的内存总量 |
swap:
| 列 | 含义 |
|---|---|
| si | 从磁盘交换进内存的数据速率(kb/s),进入内存 |
| so | 从内存交换至磁盘的数据速率(kb/s),从内存出去 |
io:
| 列 | 含义 |
|---|---|
| bi | 从块设备读入数据到系统的速率(kb/s) |
| bo | 保存数据至块设备的速率 |
system:
| 列 | 含义 |
|---|---|
| in | interrupts,中断速率,包括时钟,cpu正常运行,但还是能获取标准输入,如果输入的指令能打断 |
| cs | context switch,进程上下文切换速率 |
cpu:
| 列 | 含义 |
|---|---|
| us | Time spent running non-kernel code |
| sy | Time spent running kernel code |
| id | Time spent idle. Linux 2.5.41前,包括IO-wait time. |
| wa | Time spent waiting for IO. 2.5.41前,包括in idle. |
| st | Time stolen from a virtual machine. 2.6.11前, unknown. |
dstat:
系统资源统计
dstat包提供,用于代替vmstat,iostat功能,且默认动态刷新
dstat [-afv] [options..] [delay [count]]
-c 显示cpu相关信息
-C #,#,...,total 显示指定cpu信息
-d 显示disk相关信息
-D total,sda,sdb,... 指定硬盘信息
-g 显示page相关统计数据
-m 显示memory相关统计数据
-n 显示network相关统计数据
-p 显示process相关统计数据
-r 显示io请求相关的统计数据
-s 显示swapped相关的统计数据
--aio 异步同步数据
--fs 显示打开的文件数,inode数
--ipc 进程间通信
--lock 文件锁信息
--tcp
--udp
--unix
--raw
--socket
--top-cpu 显示最占用CPU的进程
--top-io 显示最占用io的进程
--top-mem 显示最占用内存的进程
--top-latency 显示延迟最大的进程
iotop:
监视磁盘I/O使用状况的top类工具iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息,可查看每个进程是如何使用IO
来自iotop包
输出信息:
- 第一行:Read和Write速率总计
- 第二行:实际的Read和Write速率
- 第三行:参数如下:
-
- 线程ID(按p切换为进程ID)
优先级
用户
磁盘读速率
磁盘写速率
swap交换百分比
IO等待所占的百分比
- 线程ID(按p切换为进程ID)
iotop常用参数
-o 只显示正在产生I/O的进程或线程,除了传参,可以在运行过程中按o生效
-b 非交互模式,一般用来记录日志
-n NUM, 设置监测的次数,默认无限。在非交互模式下很有用
-d SEC, 设置每次监测的间隔,默认1秒,接受非整形数据例如1.1
-p PID, 指定监测的进程/线程
-u USER 指定监测某个用户产生的I/O
-P 仅显示进程,默认iotop显示所有线程
-a 显示累积的I/O,而不是带宽
-k 使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用
-t 非交互非模式
-q 禁止头几行,非交互模式,有三种指定方式
-q 只在第一次监测时显示列名
-qq 永远不显示列名
-qqq 永远不显示I/O汇总
交互按键
left和right方向键:改变排序
r:反向排序
o:切换至选项--only
p:切换至--processes选项
a:切换至--accumulated选项
q:退出
i:改变线程的优先级
iftop:
显示网络带宽使用情况,epel源的iftop包
iftop [选项]
选项:
-n 不解析主机名
-B 显示带宽
nload:
nload是一个实时监控网络流量和带宽使用情况,以数值和动态图展示进出的流量情况,通过EPEL源安装
nload [选项] [网卡 ...]
-t 500 eht0 监听eth0网卡,每500ms刷新一次,默认100ms
-u 单位 流量单位,h|b|k|m|g|H|B|K|M|G
单位含义:
h: auto, b: Bit/s, k: kBit/s, m: MBit/s, H: auto, B: Byte/s, K: kByte/s, M: MByte/s
交互式命令:
方向键、enter、tab键切换网卡
F2显示选项窗口
q退出
glances:
综合监控工具,可远程连接显示服务端信息
通过EPEL源安装,CentOS 8 目前没有提供
格式:
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]
选项:
-b 以Byte为单位显示网卡数据速率
-d 关闭磁盘I/O模块
-f /path/to/somefile 设定输入文件位置
-o {HTML|CSV} 输出格式
-m 禁用mount模块
-n 禁用网络模块
-t # 延迟时间间隔
-1 每个CPU的相关数据单独显示
-B ip 绑定本机的ip
-s 运行为服务端模式
-c ip 连接远程的服务端ip
lsof:
list open files,查看当前系统文件的工具
在linux环境下,一切皆文件,用户通过文件不仅可以访问常规数据,还可以访问网络连接和硬件如传输控制协议(TCP)和用户数据报协议(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符
格式:
lsof [选项]
-a 列出打开文件存在的进程
-c<进程名> 列出指定进程所打开的文件
-g 列出GID号进程详情
-d<文件号> =列出占用该文件号的进程
+d<目录> 列出目录下被打开的文件
+D<目录> 递归列出目录下被打开的文件
-n<目录> 列出使用NFS的文件
-i<条件> 列出符合条件的进程(4、6、协议、:端口、@ip )
-p<进程号> 列出指定进程号所打开的文件
-u 列出UID号进程详情
-h 显示帮助信息
-v 显示版本信息。
-n 不反向解析网络名字
例1:
lsof -ni :22 列出谁在使用22端口
lsof -p `pidof ping`
例2: 程序正在使用的文件被误删除恢复
tail -f a.txt
lsof |grep a.txt
cat /proc/`pidof tail`/fd/3 > /opt/a.txt
cockpit:
Cockpit是CentOS 8 取入的新特性,是一个基于 Web界面的应用,它提供了对系统的图形化管理,来自cockpit包
UI端口:9090
功能:
监控系统活动(CPU、内存、磁盘 IO 和网络流量)
- 查看系统日志条目
- 查看磁盘分区的容量
- 查看网络活动(发送和接收)
- 查看用户帐户
- 检查系统服务的状态
- 提取已安装应用的信息
- 查看和安装可用更新(如果以 root 身份登录)并在需要时重新启动系统
- 打开并使用终端窗口
kill:
kill [选项] 信号 进程
kill -1 pid
kill -18 pid或者%作业号 #jobs看作业号
信号:
| 信号 | 含义 |
|---|---|
| 0 | 进程进行错误检查,但不严谨(把停止态、僵尸态都算正常) |
| 1 SIGHUP | 无需关闭进程进行重读配置文件 |
| 2 SIGINT | 终止正在运行的进程,ctrl+c |
| 3 SIGQUIT | ctrl+\ |
| 9 SIGKILL | 强制kill运行的进程 |
| 10 SIGUSR1 | 用户自定义信号 |
| 15 SIGTERM | 正常关闭进程,默认信号 |
| 18 SIGCONT | 继续运行 |
| 19 SIGSTOP | stop信号,进入后台运行,等于ctrl+z |
| 20 SIGSTP | 作业停止信号,同上 |
作业管理:
让作业运行于后台
运行中的作业: Ctrl+z
尚未启动的作业: COMMAND &
关闭终端任然能运行:
原理是终端关闭后,进程会把systemd进程当做父进程,此时任然能存活
nohup COMMAND &>/dev/null &
screen;COMMAND
tmux;COMMAND #增强版screen
并行运行:
利用后台执行,实现并行功能,即同时运行多个进程,提高效率
方法1:
有时需要kill才能关闭此方法
vim all.sh
f1.sh&
f2.sh&
f3.sh&
方法2:
(f1.sh&);(f2.sh&);(f3.sh&)
方法3:
f1.sh& f2.sh& f3.sh&
方法4:
{ 命令1;命令2; }& { 命令3;命令4; }&
例: 多组命令实现并行
{ ping -c3 127.1; ping 127.2; }& { ping -c3 127.3 ;ping 127.4; }&

nethogs
进程级的带宽使用状态
更多的网络相关命令可看以下博客
借鉴了博客: https://blog.csdn.net/weixin_44517656/article/details/120205757
需要epel源安装
yum install -y nethogs
nethogs
pidstat
用于查看进程相关状态,如cpu使用,内存使用、io使用
来自sysstat包
pidstat [选项]
-c str 有相关字符的命令的进程信息
-d [秒] 显示当前正占用磁盘io的进程
-h 以系统时钟显示时间,默认时间是人类可读的
-l 显示完整命令,并显示所有相关参数
-t 显示线程相关信息,可见父进程的pid
-r 显示进程的内存使用信息
-s 显示进程的堆栈使用信息
-u 显示进程的cpu使用信息
-T 内容 监控进程
-U 用户 显示用户相关进程
-w 显示进程上下文切换的信息


浙公网安备 33010602011771号