系统管理员必须了解的11个Linux性能命令

本文概述

  • lsof
  • pidstat
  • top
  • ps
  • tcpdump
  • iostat
  • dd
  • netstat
  • free
  • sar
  • ipcs
在IT领域中, 与性能故障排除相关的问题始终具有挑战性, 如果你不了解正确的工具, 那将很令人沮丧。
如果你在生产环境中作为支持工作, 那么很可能需要处理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利用率, 进程详细信息, 许多任务, 内存利用率, 大量僵尸进程等。
系统管理员必须了解的11个Linux性能命令

文章图片
显示特定用户的流程详细信息
# top –u username

要终止该进程, 可以执行top并按k。它将提示你输入要杀死的PID。
系统管理员必须了解的11个Linux性能命令

文章图片
ps ps代表进程状态, 并广泛用于命令以获取正在运行的进程的快照。找出进程是否正在运行以及是否正在运行然后显示PID很有用。
通过单词找出PID和处理细节
# ps –ef |grep word

系统管理员必须了解的11个Linux性能命令

文章图片
tcpdump 解决网络问题始终具有挑战性, 并且要使用的基本命令之一是tcpdump。
你可以使用tcpdump捕获网络接口上的网络数据包。
捕获特定网络接口上的数据包
# tcpdump –i $interface –w /tmp/capture

系统管理员必须了解的11个Linux性能命令

文章图片
如你所见, 已在” 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命令, 将显示整天的系统利用率。
系统管理员必须了解的11个Linux性能命令

文章图片
默认情况下, 它将在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性能监视和故障排除课程。

    推荐阅读