进程管理和性能相关工具-下篇

进程管理和性能相关工具:

接着上篇所写,如需了解上篇,点击跳转 进程管理和性能相关工具-上篇

上篇介绍的工具:

  • 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等待所占的百分比

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; }&

image

nethogs

进程级的带宽使用状态
更多的网络相关命令可看以下博客
借鉴了博客: https://blog.csdn.net/weixin_44517656/article/details/120205757
需要epel源安装

yum install -y nethogs
nethogs

image

pidstat

用于查看进程相关状态,如cpu使用,内存使用、io使用
来自sysstat包

pidstat [选项]
	-c str		有相关字符的命令的进程信息
	-d [秒]		显示当前正占用磁盘io的进程
	-h		以系统时钟显示时间,默认时间是人类可读的
	-l		显示完整命令,并显示所有相关参数
	-t		显示线程相关信息,可见父进程的pid
	-r		显示进程的内存使用信息
	-s		显示进程的堆栈使用信息
	-u		显示进程的cpu使用信息
	-T 内容		监控进程
	-U 用户		显示用户相关进程
	-w		显示进程上下文切换的信息
posted @ 2022-01-27 11:19  suyanhj  阅读(68)  评论(0)    收藏  举报