在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地址。

如果系统上没有安装此命令,可执行以下命令(Ubuntu上)安装ifconfig

$ sudo apt-get install net-tools

另外,像CentOS系统这样默认不带ifconfig的,可以用ip addr命令来查本地IP。

  • 查看网络连接,端口,监听等信息: 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]来查询。本文就无需做深入的讲解了。