本文概述
- lsof
- pidstat
- top
- ps
- tcpdump
- iostat
- dd
- netstat
- free
- sar
- ipcs
如果你在生产环境中作为支持工作, 那么很可能需要处理Linux环境中与性能相关的问题。
你是否正在支持功能并正在Linux服务器上工作?
让我们看一下一些最常用的Linux命令行实用工具, 以诊断与性能相关的问题。
注意:默认情况下, 可能不会默认安装以下列出的某些命令, 因此你必须手动安装它们。
lsof lsof代表” 列出打开的文件” , 以帮助你查找所有打开的文件和进程以及打开它们的人。在某些情况下, lsof实用程序可以方便使用。
要列出, 所有由特定PID打开的文件
# lsof –p PID
计算文件和进程数
[[email
protected] ~]# lsof -p 4271 | wc -l
34
[[email
protected] ~]#
检查当前打开的日志文件
# lsof –p | grep log
找出守护程序使用的端口号
[[email
protected] ~]# lsof -i -P |grep 4271nginx
4271
root
6u IPv4 51306
0t0 TCP *:80 (LISTEN)nginx
4271
root
7u IPv4 51307
0t0 TCP *:443 (LISTEN)[[email
protected] ~]#
pidstat pidstat可用于监视Linux内核管理的任务。使用此命令可以轻松解决与I / O相关的问题。
列出所有PID的I / O统计信息
# pidstat –d
替换特定PID的I / O统计信息
# pidstat –p 4271 –d
如果你要对某些过程进行实时故障排除, 则可以隔一段时间监视I / O。下面的示例是每5秒监视一次。
[[email
protected] ~]# pidstat -p 4362 -d 5Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain)
08/13/2016
_x86_64_
(2 CPU)
07:01:30 PM
UID
PID
kB_rd/s
kB_wr/s kB_ccwr/s Command07:01:35 PM
0
4362
0.00
0.00
0.00 nginx07:01:40 PM
0
4362
0.00
0.00
0.00 nginx07:01:45 PM
0
4362
0.00
0.00
0.00 nginx07:01:50 PM
0
4362
0.00
0.00
0.00 nginx
top Linux上最常用的命令之一可能就是top。 top命令可用于显示系统摘要信息和当前利用率。
只需执行top命令, 即可显示CPU利用率, 进程详细信息, 许多任务, 内存利用率, 大量僵尸进程等。
文章图片
显示特定用户的流程详细信息
# top –u username
要终止该进程, 可以执行top并按k。它将提示你输入要杀死的PID。
文章图片
ps ps代表进程状态, 并广泛用于命令以获取正在运行的进程的快照。找出进程是否正在运行以及是否正在运行然后显示PID很有用。
通过单词找出PID和处理细节
# ps –ef |grep word
文章图片
tcpdump 解决网络问题始终具有挑战性, 并且要使用的基本命令之一是tcpdump。
你可以使用tcpdump捕获网络接口上的网络数据包。
捕获特定网络接口上的数据包
# tcpdump –i $interface –w /tmp/capture
文章图片
如你所见, 已在” eno16777736″ 界面上捕获了流量。
捕获源IP与目标IP之间的网络流量
# tcpdump src $IP and dst host $IP
捕获目标端口443的网络流量
# tcpdump dst port 443
tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pktap, link-type PKTAP (Packet Tap), capture size 262144 bytes
12:02:30.833845 IP 192.168.1.2.49950 >
ec2-107-22-185-206.compute-1.amazonaws.com.https: Flags [.], ack 421458229, win 4096, length 0
12:02:32.076893 IP 192.168.1.2.49953 >
104.25.133.107.https: Flags [S], seq 21510813, win 65535, options [mss 1460, nop, wscale 5, nop, nop, TS val 353259990 ecr 0, sackOK, eol], length 0
12:02:32.090389 IP 192.168.1.2.49953 >
104.25.133.107.https: Flags [.], ack 790725431, win 8192, length 0
12:02:32.090630 IP 192.168.1.2.49953 >
104.25.133.107.https: Flags [P.], seq 0:517, ack 1, win 8192, length 517
12:02:32.109903 IP 192.168.1.2.49953 >
104.25.133.107.https: Flags [.], ack 147, win 8187, length 0
读取捕获的文件
# tcpdump –r filename
例如:读取上面捕获的文件
# tcpdump –r /tmp/test
iostat iostat代表输入输出统计信息, 通常用于诊断存储设备的性能问题。你可以使用iostat监视CPU, 设备和网络文件系统利用率报告。
显示磁盘I / O统计信息
[[email
protected] ~]# iostat -d
Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain)
08/13/2016
_x86_64_
(2 CPU)
Device:
tps
kB_read/s
kB_wrtn/s
kB_read
kB_wrtn
sda
1.82
55.81
12.63
687405
155546
[[email
protected] ~]#
显示CPU统计信息
[[email
protected] ~]# iostat -c
Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain)
08/13/2016
_x86_64_
(2 CPU)
avg-cpu: %user
%nice %system %iowait %steal
%idle
0.59
0.02
0.33
0.54
0.00
98.52
[[email
protected] ~]#
dd ldd代表列表动态依赖项, 以显示库所需的共享库。 ldd命令可以方便地诊断应用程序启动问题。
如果某些程序由于不可用的依赖项而无法启动, 那么你可以查找所需的共享库。
[[email
protected] sbin]# ldd httpd
linux-vdso.so.1 =>
(0x00007ffe7ebb2000)
libpcre.so.1 =>
/lib64/libpcre.so.1 (0x00007fa4d451e000)
libselinux.so.1 =>
/lib64/libselinux.so.1 (0x00007fa4d42f9000)
libaprutil-1.so.0 =>
/lib64/libaprutil-1.so.0 (0x00007fa4d40cf000)
libcrypt.so.1 =>
/lib64/libcrypt.so.1 (0x00007fa4d3e98000)
libexpat.so.1 =>
/lib64/libexpat.so.1 (0x00007fa4d3c6e000)
libdb-5.3.so =>
/lib64/libdb-5.3.so (0x00007fa4d38af000)
libapr-1.so.0 =>
/lib64/libapr-1.so.0 (0x00007fa4d3680000)
libpthread.so.0 =>
/lib64/libpthread.so.0 (0x00007fa4d3464000)
libdl.so.2 =>
/lib64/libdl.so.2 (0x00007fa4d325f000)
libc.so.6 =>
/lib64/libc.so.6 (0x00007fa4d2e9e000)
liblzma.so.5 =>
/lib64/liblzma.so.5 (0x00007fa4d2c79000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa4d4a10000)
libuuid.so.1 =>
/lib64/libuuid.so.1 (0x00007fa4d2a73000)
libfreebl3.so =>
/lib64/libfreebl3.so (0x00007fa4d2870000)
[[email
protected] sbin]#
netstat netstat(网络统计信息)是一种流行的命令, 用于打印网络连接, 接口统计信息并解决各种与网络相关的问题。
显示所有协议的统计信息
# netstat –s
你可以使用grep查找是否有任何错误
[[email
protected] sbin]# netstat -s | grep error
0 packet receive errors
0 receive buffer errors
0 send buffer errors
[[email
protected] sbin]#
显示内核路由表
[[email
protected] sbin]# netstat -r
Kernel IP routing table
Destination
Gateway
Genmask
Flags
MSS Window irtt Iface
default
gateway
0.0.0.0
UG
0 0
0 eno16777736
172.16.179.0
0.0.0.0
255.255.255.0
U
0 0
0 eno16777736
192.168.122.0
0.0.0.0
255.255.255.0
U
0 0
0 virbr0
[[email
protected] sbin]#
free 如果你的Linux服务器内存不足, 或者只想从可用内存中找出多少可用内存, 那么free命令将为你提供帮助。
[[email
protected] sbin]# free -g
total
used
free
shared buff/cache
available
Mem:
5
0
3
0
1
4
Swap:
5
0
5
[[email
protected] sbin]#
-g表示以GB显示详细信息。因此, 你可以看到总可用内存为5 GB, 而3 GB是可用的。
sar sar(系统活动报告)将有助于收集许多报告, 包括CPU, 内存和设备负载。
通过仅执行sar命令, 将显示整天的系统利用率。
文章图片
默认情况下, 它将在10分钟内存储利用率报告。如果你需要实时缩短时间, 可以使用以下方法。
每3秒显示3次CPU报告
[[email
protected] sbin]# sar 3 2
Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain)
08/13/2016
_x86_64_
(2 CPU)
11:14:02 PM
CPU
%user
%nice
%system
%iowait
%steal
%idle
11:14:05 PM
all
1.83
0.00
0.50
0.17
0.00
97.51
11:14:08 PM
all
1.50
0.00
0.17
0.00
0.00
98.33
Average:
all
1.67
0.00
0.33
0.08
0.00
97.92
[[email
protected] sbin]#
显示内存使用情况报告
# sar –r
显示网络报告
# sar –n ALL
ipcs ipcs(进程间通信系统)提供有关信号量, 共享内存和消息队列的报告。
列出消息队列
# ipcs –q
列出信号量
# ipcs –s
列出共享内存
# ipcs –m
显示IPC的当前使用状态
[[email
protected] sbin]# ipcs -u------ Messages Status --------
allocated queues = 0
used headers = 0
used space = 0 bytes------ Shared Memory Status --------
segments allocated 5
pages allocated 2784
pages resident 359
pages swapped
0
Swap performance: 0 attempts
0 successes------ Semaphore Status --------
used arrays = 0
allocated semaphores = 0
[[email
protected] sbin]#
我希望以上命令可以在系统管理工作中的各种情况下提供帮助。
【系统管理员必须了解的11个Linux性能命令】这些只是为了让你对命令有所了解, 如果有兴趣, 可以查看此Linux性能监视和故障排除课程。
推荐阅读
- 帮助解决3个关键Web应用程序问题的工具
- 系统管理员备忘单的最终列表
- 如何解决phantom/lib/shim.js CPU高利用率问题()
- 如何在GUI模式下启动CentOS 7(桌面环境)
- 13.Android-ListView使用BaseAdapter/ArrayAdapter/SimpleAdapter适配器使用
- 关于 Android 测量文字宽度的方法
- Android Binder实现浅析-Binder驱动
- CALL/APPLY一些编程基础以及一些基础知识正则
- 微信小程序内如何使用vant-weapp组件