收集用于获取系统相关信息的命令。
6.1 CPU、内存、网络和磁盘(I/O 操作)的统计信息
要获取 Linux 系统主要组件的常规统计信息,stat命令族非常有用。
CPU要获取与处理器相关的统计信息,你可以使用mpstat命令,但使用一些选项会提供更好的可见性:
内存我们都知道free命令用于显示(剩余)RAM 的数量,但要查看包括 I/O 操作在内的所有统计信息:
磁盘要实时获取磁盘操作的一般信息,你可以使用:
网络要能够查看网络服务发生了什么,你可以使用netstat:
$ netstat -ntlp # 开放的 TCP 套接字$ netstat -nulp # 开放的 UDP 套接字$ netstat -nxlp # 开放的 Unix 套接字
但你可能会发现有用的监控工具来实时查看网络流量:
可选要实时生成与所有组件的 I/O 操作相关的统计信息,你可以使用dstat。该工具是vmstat、iostat和ifstat的多功能替代品。
6.2 使用 lscpu 和 lshw 等工具
通过使用lscpu等工具,可以轻松获取 CPU 信息:
$ lscpuArchitecture: x86_64CPU op-mode(s): 32-bit, 64-bitByte Order: Little EndianCPU(s): 4On-line CPU(s) list: 0-3Thread(s) per core: 1Core(s) per socket: 4Socket(s): 1NUMA node(s): 1Vendor ID: GenuineIntelCPU family: 6Model: 23Stepping: 10CPU MHz: 1998.000BogoMIPS: 5303.14Virtualization: VT-xL1d cache: 32KL1i cache: 32KL2 cache: 2048KNUMA node0 CPU(s): 0-3
使用 lshw 工具
$ lshw | grep cpu *-cpu bus info: cpu@0 capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp x86-64 constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch pti fsgsbase bmi1 avx2 bmi2 invpcid rdseed adx clflushopt arat md_clear flush_l1d arch_capabilities
6.3 列出硬件
Ubuntu:
lshw是一个小型工具,用于提取机器硬件配置的详细信息。它可以报告确切的内存配置、固件版本、主板配置、CPU 版本和速度、缓存配置、总线速度等。
$ sudo lshw | less (或 more)$ sudo lshw -html > myhardware.html$ sudo lshw -xml > myhardware.xml
显示 PCI 信息
查看 USB 信息
显示 BIOS 信息
查看特定磁盘的详细信息(示例中为磁盘 sda)
一些额外的实用程序/命令将有助于收集一些额外信息:
$ smartctl -A /dev/sda | grep Power_On_Hours # 此磁盘(系统)总共通电多长时间$ hdparm -tT /dev/sda # 对磁盘 sda 进行读取速度测试$ badblocks -s /dev/sda # 测试磁盘 sda 上是否有坏块
6.4 查找 CPU 型号/速度信息
Ubuntu:
示例输出:
统计处理器数量(包括核心):
$ grep -c processor /proc/cpuinfo
6.5 进程监控和信息收集
总体而言,你有两种方式来监控 Linux 主机上的进程。
静态监控
最广泛使用的命令是ps(即进程状态)命令,用于提供有关当前运行进程的信息,包括它们的进程标识号。
以下是收集特定信息的一些有用选项:
以层次结构列出进程
$ ps -e -o pid,args --forest
按 %cpu 使用率列出进程
$ ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'
按内存(KB)列出进程
$ ps -e -orss=,args= | sort -b -k1,1n | ps -T
列出特定进程的所有线程(示例中为 "firefox-bin" 进程)
$ ps -C firefox-bin -L -o pid,tid,pcpu,state
找到特定进程后,你可以使用lsof收集相关信息,以列出该进程 ID 打开的路径:
或基于路径找出打开指定路径的进程列表:
交互式监控
动态监控最常用的工具是:
这主要是默认命令,有大量选项可用于实时过滤和显示信息(与ps相比)。
还有一些更高级的选项可以考虑安装,作为top的替代品:
或
它可以将所有活动记录到日志文件中(默认情况下,atop每 600 秒记录一次所有活动)。
在这个列表中,还有一些专门的命令,如iotop或iftop: