查看Linux系统运行状态

在Windows上有个强大的工具“任务管理器”,你可以通过它查询系统CPU,内存,网络,进程等各种状态信息。对于Linux系统,特别是当你只有命令行界面时,该如何查询这些信息呢?本文会介绍一系列Linux命令来查看系统当前运行状态。

目录

  1. CPU使用状态
  2. 内存使用状态
  3. 进程状态
  4. 网络状态
  5. 磁盘使用状态
  6. 其他信息查询

1. CPU使用状态

  • 查看CPU信息: /proc/cpuinfo
  • $ cat /proc/cpuinfo
  • 统计CPU使用状态: mpstat [OPTION] [INTERVAL]
  • 该命令需安装”sysstat”工具包。

    $ mpstat -P ALL    # 列出每个CPU的信息
    

2. 内存使用状态

  • 查看内存信息: /proc/meminfo
  • $ cat /proc/meminfo
  • 统计已用和空闲的内存: free [OPTION]
  • $ free -h

    常用参数:

    • -h: 高可读性输出,使用K, M, G等单位
    • -s n: 每隔n秒刷新,持续输出
  • 统计CPU,内存及虚拟内存使用状态: vmstat [OPTION] [INTERVAL]
  • $ vmstat 5    # 每隔5秒刷新

    输出中”swpd”指虚拟内存使用大小,”free”指空闲物理内存大小,”us”指用户CPU时间,”sy”指系统CPU时间,”id”指空闲CPU时间。
    常用参数:

    • -s: 表格统计输出,内容类似”/proc/meminfo”

3. 进程状态

  • 列出进程信息: ps [OPTION]
  • $ ps -ef | grep apache | grep –v grep   # 查看apache进程
    $ ps aux
    

    输出中第二列显示的是进程ID,可用此ID配合”kill”命令来关闭进程。
    常用参数:

    • -ef: 标准格式输出
    • aux: BSD格式输出
  • 显示进程树信息: pstree [OPTION]
  • $ pstree    # 以树形结构显示进程之间的依赖关系,包括子进程信息
  • 显示每个进程的内存映射信息: pmap [OPTION] [PID]
  • $ pmap -x 954    # 以扩展格式显示ID为954的进程的内存状态
  • 动态显示进程列表: top [OPTION]
  • 相当强大的命令,类似于Windows下的”任务管理器”。动态显示各进程的CPU/内存占有率,进程优先级,占用物理内存大小等。默认设置每3秒钟刷新一次,按CPU占有率降序排列。

    $ top

    常用参数:

    • -d n: 每n秒刷新一次
    • -i: 忽略空闲进程

    “top”模式下交互:

    • 空格: 手动刷新
    • h: 帮助信息
    • k: 输入进程ID关闭进程
    • i: 忽略空闲进程
    • s: 修改刷新间隔
    • M: 按内存占有率降序排列
    • P: 按CPU占有率降序排列
    • q: 退出”top”模式
  • 查看特定进程详细信息: /proc/[PID]/
  • $ cat /proc/3561/status     # 显示进程ID为3651的进程运行详细信息
    $ cat /proc/3561/statm      # 显示进程ID为3651的进程内存使用状况
    $ cat /proc/3561/cmdline    # 显示进程ID为3651的进程启动命令
    

4. 网络状态

  • 查看网络接口信息: ifconfig
  • “ifconfig”的功能不仅仅是查看信息,还可以配置网络接口。这里只介绍其查询功能。

    $ ifconfig

    从输出中找到你的网卡(比如eth0),其中”inet addr:”就是IP地址,”Mask:”就是子网掩码,”HWaddr”就是网卡Mac地址。

  • 查看网络连接,端口,监听等信息: netstat [OPTION]
  • $ netstat -a | grep 27017    # 查看27017端口使用情况
    $ netstat -nr                # 查看默认网关
    

    常用参数

    • -a: 显示所有选项
    • -l: 只列出有在监听的服务状态
    • -r: 显示路由信息,路由表
    • -i: 显示所有网络接口
    • -t: 只显示tcp相关网络接口
  • 查看Socket信息: ss [OPTION]
  • 功能同”netstat”很类似

    $ ss -t -a        # 显示当前所有TCP Socket连接

5. 磁盘使用状态

  • 查看磁盘空间使用状态: df [OPTION]
  • $ df -h

    常用参数:

    • -h: 高可读性输出,使用K, M, G等单位
    • -BM: 以M为单位输出,也可以换成K, G
    • -T: 显示文件系统类型信息
  • 查看指定目录下各子目录及文件的大小: du [OPTION] [DIR]
  • $ du -a /home/user/
    $ du -s    # 统计当前目录
    

    常用参数:

    • -h: 高可读性输出,使用K, M, G等单位
    • -s: 显示指定目录占有空间总和,不循环显示子目录
  • 统计CPU及IO操作信息: iostat [OPTION] [INTERVAL]
  • 该命令需安装”sysstat”工具包。

    $ iostat -kx       # 显示IO详细信息,并以k字节为单位
    $ iostat -d        # 显示设备IO信息
    $ iostat -p ALL    # 显示每个设备IO信息
    

6. 其他信息查询

  • 统计系统活动状况报告: sar [OPTION] [INTERVAL]
  • 强大的命令,全面的系统性能监控和分析工具。该命令需安装”sysstat”工具包。

    $ sar -u 5 10    # 显示CPU状态,每个5秒刷新一次,刷新10次后停止
    

    常用参数:

    • -A:显示所有报告的总和
    • -u:显示CPU使用情况的统计信息
    • -r:显示内存和交换空间的统计信息
    • -b:显示I/O和传送速率的统计信息
    • -d:显示每一个块设备的活动信息
    • -R:显示内存页面的统计信息
    • -w:显示系统交换活动信息
  • 列出系统中所有当前打开着的文件或进程: lsof [option]
  • $ lsof | grep ld-2.19.so    # 列出哪些进程在使用指定的库文件
    $ sudo lsof -i :80          # 列出80端口现在运行什么程序,Ubuntu上需用sudo执行
    
  • 显示主机信息: uname [OPTION]
  • $ uname -a

    常用参数:

    • -n: 显示主机名
    • -r: 显示内核版本
    • -i: 显示硬件平台,如x86_64
    • -a: 显示所有信息
  • 查看当前用户登录信息: who [OPTION]
  • $ who

    常用参数:

    • -b: 显示上次系统启动时间
    • -r: 显示当前Linux的运行级别
  • 列出以往用户登录信息: last -n
  • 显示最近n次登录。

    $ last -5    # 显示最近5次登录信息
  • 查看主机名: hostname
  • 作用同”uname -n”

    $ hostname
  • 查看当前主机的外部IP地址
  • $ curl ifconfig.me
  • 查看系统运行时间: uptime
  • 统计系统从启动到现在运行了多久。

    $ uptime -p    # 简洁显示
  • 查看当前用户名: whoami
  • $ whoami

以上是常用的Linux系统运行状态查询及监控命令。另外,Linux上还有个很强大的命令,就是”man”。如果你想更详细的了解各命令的使用方法,参数详解等,你可以通过”man [COMMAND]“来查询。本文就无需做深入的讲解了。

《查看Linux系统运行状态》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注