当前位置:首页 > 云服务器 > 正文

Linux查看服务器状态,命令有哪些?怎么用?

在Linux系统中,查看服务器状态是系统管理和运维的核心工作之一,通过多种命令和工具可以全面掌握服务器的CPU、内存、磁盘、网络等资源的使用情况,及时发现潜在问题并采取优化措施,以下从不同维度详细介绍Linux服务器状态查看的方法及实用技巧。

CPU状态查看

CPU是服务器的核心处理单元,监控其状态可以判断系统负载和性能瓶颈,常用命令包括top、htop、uptime和vmstat。

  1. top命令

    top是动态监控进程的工具,默认每3秒刷新一次数据,执行后可查看整体CPU使用率(us用户空间、sys内核空间、id空闲、wa等待I/O)、进程列表(PID、用户、CPU占用率、内存占用等),按P键可按CPU使用率排序,按M键按内存使用率排序,按1键可查看各CPU核心的详细状态。

  2. htop命令

    htop是top的增强版,提供更直观的彩色界面和交互操作,支持鼠标点击、进程树形展示等,安装后直接输入htop,即可实时查看CPU、内存、_swap_使用情况,以及每个进程的详细资源占用。

  3. uptime命令

    该命令快速显示系统运行时间、当前登录用户数以及平均负载(1分钟、5分钟、15分钟),平均负载是衡量CPU繁忙程度的重要指标,一般建议不超过CPU核心数的1倍,若持续超过2倍则需警惕性能问题。

  4. vmstat命令

    vmstat 1(每秒刷新一次)可输出CPU系统调用(sy)、上下文切换(cs)、中断(in)等详细信息,其中r列表示运行队列进程数,若长期大于CPU核心数,说明CPU过载;us和sy比例过高时,需分别优化用户程序或内核参数。

内存状态查看

内存不足会导致系统频繁使用交换分区(swap),显著降低性能,常用命令有free、vmstat和smem。

Linux查看服务器状态,命令有哪些?怎么用? 第1张

  1. free命令

    free h以人类可读格式(GB/MB)显示总内存、已用、空闲、共享内存、缓冲区和swap使用情况,重点关注available列(可用内存),而非free列,因为可用内存包含了可回收的缓存和缓冲区,若swap持续被使用,且可用内存接近于0,需考虑扩容或优化内存占用大的进程。

  2. vmstat命令

    vmstat的swpd列表示swap使用量,si(swap in)和so(swap out)列表示每秒交换到磁盘和从磁盘交换到内存的数据量,若si和so长期不为0,说明内存不足,系统频繁进行swap操作,需及时排查。

  3. smem命令

    smem可按进程、用户或命令统计内存使用,区分物理内存和swap占用,适合分析内存碎片化问题,例如smem pk可按PSS(Proportional Set Size)排序,更准确反映进程真实内存占用。

磁盘状态查看

磁盘I/O性能直接影响数据读写速度,需关注使用率、IOPS和等待时间,常用命令有df、du、iostat和iotop。

  1. df命令

    df h显示各文件系统的总容量、已用、可用及使用率(%Use),重点关注根目录(/)、数据目录(如/var、/home)的使用率,若超过85%需及时清理或扩容。df i可查看inode使用情况,若inode耗尽会导致无法创建新文件。

    Linux查看服务器状态,命令有哪些?怎么用? 第2张

  2. du命令

    du sh *统计当前目录下各文件及子目录的大小,du sh maxdepth=1 /path可查看指定目录下一级目录的大小,帮助定位大文件或占用空间过多的目录。

  3. iostat命令

    iostat dx 1(每秒刷新)显示磁盘设备的利用率(%util)、读写请求(r/s、w/s)、平均等待时间(await)等。%util超过80%说明磁盘繁忙,await远于磁盘硬件的理论响应时间时,说明I/O存在瓶颈,可考虑优化磁盘调度算法或更换SSD。

  4. iotop命令

    iotop类似top,但专注于磁盘I/O监控,实时显示每个进程的读(READ)、写(WRITE)速度及I/O优先级,适合定位高I/O消耗的进程。

网络状态查看

网络监控需关注流量连接、端口状态和错误包,常用命令有ss、netstat、iftop和nethogs。

  1. ss和netstat命令

    ss tulnp显示所有监听(LISTEN)和非监听端口,协议类型(TCP/UDP)、进程PID及名称。netstat an效果类似,但ss性能更优,若发现异常端口(如未授权的高端口),需检查是否为恶意程序。

  2. iftop命令

    iftop实时显示网络接口的实时流量(发送、接收)、连接的目标IP和端口,按流量大小排序,适合监控带宽占用情况,安装后执行iftop i eth0(eth0为网卡名)即可查看指定网卡的流量。

    Linux查看服务器状态,命令有哪些?怎么用? 第3张

  3. nethogs命令

    nethogs按进程统计网络带宽使用情况,可快速定位哪个进程导致网络拥堵,执行nethogs eth0即可实时查看各进程的上传下载速度。

  4. 系统整体状态查看

    1. glances命令

      glances是一个跨平台的系统监控工具,整合了CPU、内存、磁盘、网络、进程等信息,以仪表盘形式展示,支持自动警报和历史数据记录,安装后执行glances即可获得全面的系统状态。

    2. dstat命令

      dstat cmdn(CPU、磁盘、内存、网络)可同时多项资源,并生成格式化报告,适合快速排查系统瓶颈。

    自动化监控脚本

    对于长期监控,可编写Shell脚本定时收集状态信息并发送告警,以下脚本可检查CPU负载和磁盘使用率,超过阈值时发送邮件告警:

    #!/bin/bash CPU_LOAD=$(uptime | awk F'load average:' '{ print $2 }' | cut d',' f1 | sed 's/ //') DISK_USAGE=$(df / | tail 1 | awk '{ print $5 }' | sed 's/%//') THRESHOLD_CPU=5.0 THRESHOLD_DISK=85 if (( $(echo "$CPU_LOAD > $THRESHOLD_CPU" | bc l) )); then echo "CPU负载过高: $CPU_LOAD" | mail s "告警:CPU负载" admin@example.com fi if [ "$DISK_USAGE" gt "$THRESHOLD_DISK" ]; then echo "磁盘使用率过高: ${DISK_USAGE}%" | mail s "告警:磁盘使用率" admin@example.com fi

    将脚本加入crontab,设置每10分钟执行一次,即可实现自动化监控。

    相关问答FAQs

    Q1:如何查看Linux服务器中哪个进程占用CPU最高?

    A:使用top命令后按P键(大写)按CPU使用率排序,或使用ps eo pid,ppid,cmd,%mem,%cpu sort=%cpu | head 10直接显示CPU占用率最高的前10个进程,若需实时监控,可结合htop查看进程树和资源变化。

    Q2:Linux服务器内存不足时,如何快速定位占用内存最多的进程?

    A:执行ps eo pid,ppid,cmd,%mem,%cpu sort=%mem | head 10按内存使用率排序,或使用smem pk查看PSS内存占用,若swap频繁使用,可通过free h确认swap使用量,并结合cat /proc/PID/status查看具体进程的内存详情(如VmRSS、VmSize),必要时终止异常进程(kill 9 PID)。

0