Linux 中系统资源的管理
进程管理工具
top 命令
top:有许多内置命令
排序:
P:以占据的CPU百分比,%CPU
M:占据内存百分比,%MEM
T:累积占据CPU时长,TIME+
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
保存文件:W
top 命令栏位简介
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间
top命令扩展
选项:
-d # 指定刷新时间间隔,默认为3秒
-b 全部显示所有进程
-n # 刷新多少次后退出
-H 线程模式,示例:top -H -p `pidof mysqld`
htop命令:EPEL源
选项:
-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程
-s COLUME: 以指定字段进行排序
子命令:
s:跟踪选定进程的系统调用
l:显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t:显示进程树
内存空间管理
查看内存空间的使用状态:
free [OPTION]
-b 以字节为单位
-m 以MB为单位
-g 以GB为单位
-h 易读格式
-o 不显示-/+buffers/cache行
-t 显示RAM + swap的总和
-s n 刷新间隔为n秒
-c n 刷新n次后即退出
free命令中参数的意义:
内存工具
vmstat命令
vmstat命令:
查看虚拟内存信息
vmstat [options]/[delay [count]]
vmstat 2 5
vmstat参数:
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 中断速率,包括时钟
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.
选项:
-s: 显示内存的统计数据
其他内存工具
iostat:统计CPU和设备IO信息
示例:iostat 1 10
pmap命令:进程对应的内存映射
pmap [options] pid […]
-x: 显示详细格式的信息
示例:pmap 1
另外一种实现:
cat /proc/PID/maps
系统监控工具
glances 命令
glances属于第三方EPEL源中的工具
glances [-bdehmnrsvyz1]/[-B bind]/[-c server]/[-C conffile]/[-p port]/[-P password]/[– password]/[-t refresh]/[-f file]/[-o output]
内建命令:
a Sort processes automatically l Show/hide logs
c Sort processes by CPU% b Bytes or bits for network I/O
m Sort processes by MEM% w Delete warning logs
p Sort processes by name x Delete warning and critical logs
i Sort processes by I/O rate 1 Global CPU or per-CPU stats
d Show/hide disk I/O stats h Show/hide this help screen
f Show/hide file system stats t View network I/O as combination
n Show/hide network stats u View cumulative network I/O
s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)
y Show/hide hddtemp stats
部分选项解释:
-b: 以Byte为单位显示网卡数据速率
-d: 关闭磁盘I/O模块
-f /path/to/somefile: 设定输入文件位置
-o {HTML|CSV}:输出格式
-m: 禁用mount模块
-n: 禁用网络模块
-t #: 延迟时间间隔
-1:每个CPU的相关数据单独显示
*C/S模式下运行glances命令 *
服务器模式:
glances -s -B IPADDR
IPADDR: 指明监听的本机哪个地址
客户端模式:
glances -c IPADDR
IPADDR:要连入的服务器端地址
dstat 命令
dstat命令:系统资源统计,代替vmstat,iostat,需要使用yum安装
dstat [-afv]/[options..]/[delay [count]]
-c 显示cpu相关信息
-C #,#,…,total
-d 显示disk相关信息
-D total,sda,sdb,…
-g 显示page相关统计数据
-m 显示memory相关统计数据
-n 显示network相关统计数据
-p 显示process相关统计数据
-r 显示io请求相关的统计数据
-s 显示swapped相关的统计数据
–tcp
–udp
–unix
–raw
–socket
–ipc
–top-cpu:显示最占用CPU的进程
–top-io: 显示最占用io的进程
–top-mem: 显示最占用内存的进程
–top-latency: 显示延迟最大的进程
iotop
iotop命令是一个用来监视磁盘I/O使用状况的top类工具iotop具有与top相似的UI,其中包括 PID、用户、I/O、进程等相关信息,可查看每个进程是如何使用IO
iotop输出
第一行:Read和Write速率总计
第二行:实际的Read和Write速率
第三行:
参数如下:
线程ID(按p切换为进程ID)
优先级
用户
磁盘读速率
磁盘写速率
swap交换百分比
IO等待所占的百分比
线程/进程命令
iotop 常用参数
-o, –only只显示正在产生I/O的进程或线程,除了传参,可以在运行过程中按o 生效
-b, –batch非交互模式,一般用来记录日志
-n NUM, –iter=NUM设置监测的次数,默认无限。在非交互模式下很有用
-d SEC, –delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1
-p PID, –pid=PID指定监测的进程/线程
-u USER, –user=USER指定监测某个用户产生的I/O
-P, –processes仅显示进程,默认iotop显示所有线程
-a, –accumulated显示累积的I/O,而不是带宽
-k, –kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本 编程有用
-t, –time 加上时间戳,非交互非模式
-q, –quiet 禁止头几行,非交互模式,有三种指定方式
-q 只在第一次监测时显示列名
-qq 永远不显示列名
-qqq 永远不显示I/O汇总
iotop 交互按键
left和right方向键:改变排序
r:反向排序
o:切换至选项–only
p:切换至–processes选项
a:切换至–accumulated选项
q:退出
i:改变线程的优先级
lsof
Lsof:list open files查看当前系统文件的工具。在linux环境下,一切皆文件,用户通 过文件不仅可以访问常规数据,还可以访问网络连接和硬件如传输控制协议 (TCP) 和 用户数据报协议 (UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符
命令参数
-a:列出打开文件存在的进程
-c<进程名>:列出指定进程所打开的文件
-g:列出GID号进程详情
-d<文件号>:列出占用该文件号的进程
+d<目录>:列出目录下被打开的文件
+D<目录>:递归列出目录下被打开的文件
-n<目录>:列出使用NFS的文件
-i<条件>:列出符合条件的进程(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件
-u:列出UID号进程详情
-h:显示帮助信息
-v:显示版本信息。
-n: 不反向解析网络名字
进程管理
查看由登陆用户启动而非系统启动的进程
lsof /dev/pts1
指定进程号,可以查看该进程打开的文件
lsof -p 9527
文件管理
查看指定程序打开的文件
lsof -c httpd
查看指定用户打开的文件
lsof -u root | more
查看指定目录下被打开的文件
lsof +D /var/log/
lsof +d /var/log/
参数+D为递归列出目录下被打开的文件,参数+d为列出目录下被打开的文件
网络管理
查看所有网络连接
lsof -i –n lsof -i@127.0.0.1
通过参数-i查看网络连接的情况,包括连接的ip、端口等以及一些服务的连接情况,例如: sshd等。也可以通过指定ip查看该ip的网络连接情况
查看端口连接情况
lsof -i :80 -n
通过参数-i:端口可以查看端口的占用情况,-i参数还有查看协议,ip的连接情况等
查看指定进程打开的网络连接
lsof -i –n -a -p 9527
参数-i、-a、-p等,-i查看网络连接情况,-a查看存在的进程,-p指定进程
查看指定状态的网络连接
lsof -n -P -i TCP -s TCP:ESTABLISHED
-n:no host names, -P:no port names,-i TCP指定协议,-s指定协议状态通过多个参数可以 清晰的查看网络连接情况、协议连接情况等
恢复删除文件
lsof |grep /var/log/messages
rm -f /var/log/messages
lsof |grep /var/log/messages
cat /proc/653/fd/6
cat /proc/653/fd/6 > /var/log/messages