每个系统管理员都要知道的 30个Linux 系统监控工具 下载本文

在进程后显示线程 # ps -AlLm

显示系统上所有的进程 # ps ax # ps aux 显示进程树 # ps -ejH # ps axjf # pstree

显示进程的安全信息

# ps -eo euser,ruser,suser,fuser,f,comm,label # ps axZ # ps -eM

显示指定用户(如 vivek)运行的进程 # ps -U vivek -u vivek u 设置用户自定义的输出格式

# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm # ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm # ps -eopid,tt,user,fname,tmout,f,wchan 显示某进程(如 lighttpd)的 PID # ps -C lighttpd -o pid= 或

# pgrep lighttpd 或

# pgrep -u vivek php-cgi

显示指定 PID(如 55977)的进程名称 # ps -p 55977 -o comm=

找出占用内存资源最多的前 10 个进程 # ps -auxf | sort -nr -k 4 | head -10 找出占用 CPU 资源最多的前 10 个进程 # ps -auxf | sort -nr -k 3 | head -10

6. free – 内存使用情况

free 命令显示了系统的可用和已用的物理内存及交换内存的总量,以及内核用到的缓存空间。 # free 输出示例:

total used free shared buffers cached

Mem:12302896973966425632325231245154740

7. iostat – CPU 平均负载和磁盘活动

iostat 命令用于汇报 CPU 的使用情况,以及设备、分区和网络文件系统(NFS)的 IO 统计信息。 # iostat 输出示例:

8. sar – 监控、收集和汇报系统活动

sar 命令用于收集、汇报和保存系统活动信息。要查看网络统计,请输入: # sar -n DEV | more 显示 24 日的网络统计:

# sar -n DEV -f /var/log/sa/sa24 | more 您还可以使用 sar 显示实时使用情况: # sar 4 5 输出示例:

9. mpstat – 监控多处理器的使用情况

mpstat 命令显示每个可用处理器的使用情况,编号从 0 开始。命令 mpstat -P ALL 显示了每个处理器的平均使用率:

# mpstat -P ALL 输出示例:

10. pmap – 监控进程的内存使用情况

pmap 命令用以显示进程的内存映射,使用此命令可以查找内存瓶颈。 # pmap -d PID

显示 PID 为 47394 的进程的内存信息,请输入: # pmap -d 47394 输出示例: 最后一行非常重要:

mapped: 933712K 映射到文件的内存量 writeable/private: 4304K 私有地址空间

shared: 768000K 此进程与其他进程共享的地址空间

11. netstat – Linux 网络统计监控工具

netstat 命令显示网络连接、路由表、接口统计、伪装连接和多播连接等信息。 # netstat -tulpn # netstat -nat

12. ss – 网络统计

ss 命令用于获取套接字统计信息。它可以显示类似于 netstat 的信息。不过 netstat 几乎要过时了,ss 命令更具优势。要显示所有 TCP 或 UDP 套接字: # ss -t -a 或 # ss -u -a

显示所有带有 SELinux 安全上下文Security Context的 TCP 套接字: # ss -t -a -Z

13. iptraf – 获取实时网络统计信息

iptraf 命令是一个基于 ncurses 的交互式 IP 网络监控工具。它可以生成多种网络统计信息,包括 TCP 信息、UDP 计数、ICMP 和 OSPF 信息、以太网负载信息、节点统计信息、IP 校验错误等。它以简单的格式提供了以下信息: 基于 TCP 连接的网络流量统计 基于网络接口的 IP 流量统计 基于协议的网络流量统计

基于 TCP/UDP 端口和数据包大小的网络流量统计 基于二层地址的网络流量统计

图 02:常规接口统计:基于网络接口的 IP 流量统计

图 03:基于 TCP 连接的网络流量统计

14. tcpdump – 详细的网络流量分析

tcpdump 命令是简单的分析网络通信的命令。您需要充分了解 TCP/IP 协议才便于使用此工具。例如,要显示有关 DNS 的流量信息,请输入: # tcpdump -i eth1 'udp port 53'

查看所有去往和来自端口 80 的 IPv4 HTTP 数据包,仅打印真正包含数据的包,而不是像 SYN、FIN 和仅含 ACK 这类的数据包,请输入:

# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)>2)) != 0)' 显示所有目标地址为 202.54.1.5 的 FTP 会话,请输入: # tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20' 打印所有目标地址为 192.168.1.5 的 HTTP 会话:

# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http' 使用 wireshark 查看文件的详细内容,请输入:

# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

15. iotop – I/O 监控