Linux系统信息查看与性能监控实用指南
1. Linux系统信息查看与实用技巧全攻略作为一名Linux系统管理员掌握系统信息查看技巧是日常工作的基本功。无论是排查硬件故障、优化系统性能还是部署新服务都需要快速准确地获取系统信息。本文将带你从硬件到软件全面掌握Linux系统信息查看的各种实用技巧。2. 硬件信息查看实战2.1 CPU信息查看CPU是系统的核心组件了解其详细信息对性能调优至关重要。最常用的命令是lscpu它能显示CPU架构、核心数、线程数、缓存大小等关键信息。$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 2 Core(s) per socket: 4 Socket(s): 1另一个实用命令是cat /proc/cpuinfo它提供更详细的处理器信息包括型号名称、频率、缓存等。结合grep可以快速筛选特定信息$ cat /proc/cpuinfo | grep model name | uniq model name : Intel(R) Core(TM) i7-7700HQ CPU 2.80GHz提示在多核系统中/proc/cpuinfo会为每个逻辑核心显示一个条目使用uniq可以避免重复输出。2.2 内存信息查看内存使用情况直接影响系统性能。free命令是最常用的内存查看工具$ free -h total used free shared buff/cache available Mem: 15Gi 3.2Gi 8.4Gi 345Mi 3.4Gi 11Gi Swap: 2.0Gi 0.0Ki 2.0Gi-h参数使输出更易读自动转换为GB/MB单位。要查看详细的内存硬件信息可以使用dmidecode命令$ sudo dmidecode -t memory这个命令需要root权限它会显示每个内存插槽的详细信息包括制造商、型号、大小和速度等。2.3 磁盘和存储设备信息磁盘I/O往往是系统性能瓶颈所在。lsblk命令可以列出所有块设备$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 732M 0 part /boot └─sda3 8:3 0 464.6G 0 part └─sda3_crypt 253:0 0 464.5G 0 crypt ├─vgubuntu-root │ 253:1 0 463.6G 0 lvm / └─vgubuntu-swap_1 253:2 0 980M 0 lvm [SWAP]对于更详细的磁盘信息hdparm命令非常有用$ sudo hdparm -I /dev/sda | grep -i speed * Gen1 signaling speed (1.5Gb/s) * Gen2 signaling speed (3.0Gb/s) * Gen3 signaling speed (6.0Gb/s)2.4 网络设备信息网络配置信息可以通过ip命令查看$ ip addr show 1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: enp3s0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:1e:4f:c8:43:86 brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0 valid_lft 86300sec preferred_lft 86300sec要查看网络接口的硬件详细信息可以使用ethtool$ sudo ethtool enp3s0 Settings for enp3s0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on3. 系统与内核信息查看3.1 操作系统版本信息要查看Linux发行版信息可以使用以下命令$ cat /etc/os-release NAMEUbuntu VERSION20.04.3 LTS (Focal Fossa) IDubuntu ID_LIKEdebian PRETTY_NAMEUbuntu 20.04.3 LTS VERSION_ID20.04对于内核版本信息$ uname -a Linux ubuntu 5.11.0-46-generic #51~20.04.1-Ubuntu SMP Fri Jan 7 06:51:40 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux3.2 系统运行时间和负载uptime命令可以快速查看系统运行时间和负载情况$ uptime 15:32:45 up 12 days, 3:45, 2 users, load average: 0.08, 0.03, 0.01负载平均值表示1分钟、5分钟和15分钟内的平均负载。在多核系统中负载值除以核心数得到的百分比更有意义。3.3 内核模块和驱动程序要查看已加载的内核模块$ lsmod Module Size Used by nls_utf8 16384 1 isofs 40960 1 uas 24576 0 usb_storage 73728 2 uas要查看特定模块的详细信息$ modinfo usb_storage filename: /lib/modules/5.11.0-46-generic/kernel/drivers/usb/storage/usb-storage.ko license: GPL description: USB Mass Storage driver for Linux author: Matthew Dharm mdharm-usbone-eyed-alien.net srcversion: 8F5C5C9E1D1A5A5D5E5A5A5 depends: usbcore retpoline: Y intree: Y name: usb_storage vermagic: 5.11.0-46-generic SMP mod_unload modversions4. 进程和系统资源监控4.1 进程信息查看ps命令是查看进程信息的基本工具$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 168016 13172 ? Ss Jan07 0:08 /sbin/init splash root 2 0.0 0.0 0 0 ? S Jan07 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I Jan07 0:00 [rcu_gp]更直观的进程查看工具是top或htop需要安装$ top top - 15:45:32 up 12 days, 3:58, 2 users, load average: 0.00, 0.01, 0.00 Tasks: 231 total, 1 running, 230 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 15985.8 total, 8553.8 free, 3298.4 used, 4133.6 buff/cache MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 12245.6 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND 1234 user 20 0 2794344 324156 107888 S 0.7 2.0 12:34.56 gnome-shell4.2 系统资源监控vmstat命令提供系统整体资源使用情况的概览$ vmstat 1 5 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 8763424 213412 4102144 0 0 3 2 1 1 1 0 99 0 0 0 0 0 8763280 213412 4102144 0 0 0 0 420 843 0 0 100 0 0参数1表示每秒采样一次5表示采样5次。输出中关键列r等待运行的进程数free空闲内存si/so交换区换入/换出us/sy/id用户/系统/空闲CPU时间百分比iostat命令专门用于监控磁盘I/O$ iostat -x 1 Linux 5.11.0-46-generic (ubuntu) 01/19/2022 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.50 0.00 0.25 0.05 0.00 99.20 Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 0.12 0.25 4.00 3.50 0.00 0.00 0.00 0.00 0.50 1.20 0.00 33.33 14.00 0.50 0.025. 实用技巧与高级用法5.1 信息查看的组合技巧通过管道组合多个命令可以获取更精确的信息。例如查找占用CPU最高的5个进程$ ps aux --sort-%cpu | head -n 6 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND user 12345 45.6 7.8 4789232 1287656 ? Sl Jan10 120:45 /usr/bin/chromium user 23456 12.3 4.5 3245678 745678 ? Sl Jan10 45:32 /usr/lib/firefox/firefox查找内存占用最高的进程$ ps aux --sort-%mem | head -n 65.2 定时监控与日志记录可以使用watch命令定时刷新信息$ watch -n 1 free -h或者将系统信息记录到日志文件中$ while true; do echo $(date) $(free -h | grep Mem:) memory.log; sleep 60; done5.3 硬件信息汇总工具lshw命令可以生成完整的硬件报告$ sudo lshw -short H/W path Device Class Description system Inspiron 5570 /0 bus 0NW6H0 /0/0 memory 64KiB BIOS /0/4 processor Intel(R) Core(TM) i7-8550U CPU 1.80GHz /0/4/5 memory 128KiB L1 cache /0/4/6 memory 1MiB L2 cache /0/4/7 memory 8MiB L3 cache /0/18 memory 16GiB System Memory /0/18/0 memory 8GiB SODIMM DDR4 Synchronous 2400 MHz (0.4 ns) /0/18/1 memory 8GiB SODIMM DDR4 Synchronous 2400 MHz (0.4 ns)生成HTML格式的详细报告$ sudo lshw -html hardware_info.html5.4 系统性能基准测试sysbench是一个多功能的基准测试工具可以测试CPU、内存、文件I/O等性能测试CPU性能$ sysbench cpu --cpu-max-prime20000 run sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3) Running the test with following options: Number of threads: 1 Initializing random number generator from current time Prime numbers limit: 20000 Initializing worker threads... Threads started! CPU speed: events per second: 633.33 General statistics: total time: 10.0007s total number of events: 6336 Latency (ms): min: 1.56 avg: 1.58 max: 3.10 95th percentile: 1.59 sum: 9998.74 Threads fairness: events (avg/stddev): 6336.0000/0.00 execution time (avg/stddev): 9.9987/0.00测试内存性能$ sysbench memory --memory-block-size1K --memory-total-size10G run6. 常见问题排查技巧6.1 硬件故障排查当遇到硬件问题时dmesg命令是首要检查的工具$ dmesg | grep -i error [ 2.345678] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20190816/psargs-330) [ 4.567890] usb 3-2: device descriptor read/64, error -110对于磁盘健康状态可以使用smartctl工具需要安装smartmontools$ sudo smartctl -a /dev/sda smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.11.0-46-generic] (local build) Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org START OF INFORMATION SECTION Model Family: Samsung based SSDs Device Model: Samsung SSD 860 EVO 500GB Serial Number: S3YZNB0K123456 LU WWN Device Id: 5 002538 e12345678 Firmware Version: RVT02B6Q User Capacity: 500,107,862,016 bytes [500 GB] Sector Size: 512 bytes logical/physical Rotation Rate: Solid State Device Form Factor: 2.5 inches Device is: In smartctl database [for details use: -P show] ATA Version is: ACS-3 T13/2161-D revision 5 SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Wed Jan 19 16:00:00 2022 UTC SMART support is: Available - device has SMART capability. SMART support is: Enabled START OF READ SMART DATA SECTION SMART overall-health self-assessment test result: PASSED ...6.2 性能瓶颈分析当系统变慢时可以使用以下步骤快速定位问题使用top或htop查看CPU和内存使用情况使用iostat -x 1查看磁盘I/O瓶颈使用iftop或nethogs查看网络流量使用dmesg检查内核日志中的错误例如如果发现%waI/O等待值很高说明磁盘是瓶颈$ vmstat 1 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 1 0 123456 78900 1234567 0 0 1200 300 500 1200 10 5 70 15 06.3 驱动问题排查当硬件设备无法正常工作时首先检查是否加载了正确的驱动模块$ lsmod | grep -i wifi iwlmvm 372736 0 mac80211 843776 1 iwlmvm iwlwifi 282624 1 iwlmvm cfg80211 704512 3 iwlmvm,iwlwifi,mac80211检查内核消息缓冲区中的相关消息$ dmesg | grep -i wifi [ 5.678901] iwlwifi 0000:03:00.0: loaded firmware version 36.77d01142.0 op_mode iwlmvm [ 5.789012] iwlwifi 0000:03:00.0: Detected Intel(R) Dual Band Wireless AC 8265, REV0x2306.4 系统日志分析系统日志是排查问题的宝贵资源。主要的日志文件包括/var/log/syslog通用系统日志/var/log/kern.log内核日志/var/log/dmesg启动时的内核消息/var/log/auth.log认证相关日志使用journalctlsystemd系统可以更方便地查看日志$ journalctl -xe $ journalctl --since 2022-01-19 15:00:00 --until 2022-01-19 16:00:00 $ journalctl -u nginx.service7. 自动化信息收集脚本为了定期收集系统信息可以创建自动化脚本。以下是一个示例脚本收集关键系统信息并生成报告#!/bin/bash REPORT_FILE/var/log/system_report_$(date %Y%m%d_%H%M%S).log { echo SYSTEM REPORT $(date) echo -e \n CPU Information lscpu echo -e \n Memory Information free -h echo -e \n Disk Information lsblk df -h echo -e \n Network Information ip addr show echo -e \n Running Processes (Top 10 by CPU) ps aux --sort-%cpu | head -n 11 echo -e \n System Uptime and Load uptime echo -e \n Kernel Messages (Last 20) dmesg | tail -n 20 } $REPORT_FILE echo System report generated at: $REPORT_FILE可以将此脚本设置为定期运行如通过cron以便持续监控系统状态。8. 图形化监控工具虽然命令行工具强大但图形化工具有时更直观。推荐几个常用的图形化系统监控工具GNOME System MonitorLinux桌面环境自带的图形化监控工具KSysGuardKDE环境的系统监控工具Conky轻量级的桌面系统监视工具可高度定制Glances跨平台的命令行图形化监控工具安装Glances$ sudo apt install glances $ glancesGlances提供了丰富的系统信息包括CPU、内存、磁盘、网络、进程等并支持Web界面和远程监控。9. 远程系统监控对于服务器管理经常需要远程监控系统状态。常用的远程监控方案包括SSH tmux/screen建立持久会话运行监控命令$ ssh userserver tmux new-session -d htop $ ssh userserver -t tmux attachNetdata实时性能监控工具提供Web界面$ bash (curl -Ss https://my-netdata.io/kickstart.sh)Prometheus Grafana功能强大的监控和可视化组合Zabbix企业级监控解决方案简单的基于SSH的监控示例$ watch -n 1 ssh userserver top -b -n 1 | head -n 10这个命令会每秒刷新显示远程服务器的top命令输出前10行。10. 安全相关系统信息系统安全审计时需要检查一些关键信息检查已登录用户$ who $ last检查sudo权限$ sudo -l检查开放端口$ ss -tulnp检查计划任务$ systemctl list-timers $ crontab -l $ ls /etc/cron.*检查setuid/setgid文件$ find / -perm /4000 -type f 2/dev/null $ find / -perm /2000 -type f 2/dev/null检查最近修改的文件$ find / -mtime -7 -type f 2/dev/null | grep -v /proc/ | grep -v /sys/11. 系统信息查看的最佳实践根据多年Linux系统管理经验总结以下最佳实践定期收集基线数据在系统正常运行时收集性能数据作为基准便于后续比较建立监控告警机制对关键指标设置阈值告警如CPU使用率、磁盘空间等文档化硬件配置记录服务器硬件配置信息便于故障排查和升级规划使用版本控制系统管理配置将/etc目录下的重要配置文件纳入版本控制自动化信息收集编写脚本定期收集系统信息并归档保持工具更新定期更新系统监控工具确保兼容性和安全性学习阅读内核日志掌握dmesg和journalctl的输出格式快速定位问题理解性能指标关联CPU高可能是内存不足导致频繁交换要综合分析建立排查流程形成标准化的故障排查流程从整体到局部逐步缩小范围分享知识文档将常见问题和解决方案整理成团队知识库