linux glances命令

glances命令 是一个跨平台的实时系统监控工具,使用Python编写。它提供丰富的系统监控信息,包括CPU、内存、磁盘、网络、进程等,支持彩色界面、Web界面和API接口,是现代系统监控的优秀选择。

命令格式

# 基本使用
glances [选项]

# 客户端模式
glances -c [服务器地址]

# 服务器模式
glances -s

# Web服务器模式
glances -w

常用选项

选项 说明
-1 每核CPU使用情况
-2 合并CPU使用情况
-4 强制IPv4
-6 强制IPv6
-b 字节/秒网络统计
-c [地址] 连接到glances服务器
-d 禁用磁盘I/O模块
-e 显示所有进程(默认显示活跃进程)
-f [文件] 配置文件路径
-h 显示帮助信息
-m 禁用挂载点模块
-n 禁用网络模块
-p [端口] 服务器端口(默认61209)
-q 禁用进程列表
-r 禁用进程排行
-s 启动服务器模式
-t [秒] 刷新间隔时间(默认3秒)
-w 启动Web服务器模式
-x 禁用警报模块
-y 启用CSV输出
--disable-[模块] 禁用指定模块
--enable-[模块] 启用指定模块
--export [类型] 导出数据(csv, json, influxdb等)
--process-short-name 显示短进程名

监控模块说明

系统核心模块
  • System - 系统信息(主机名、运行时间等)
  • CPU - CPU使用率(每核和整体)
  • Mem - 内存使用情况
  • Swap - 交换分区使用
  • Load - 系统负载
存储模块
  • Disk I/O - 磁盘读写统计
  • FS - 文件系统使用情况
  • Mount - 挂载点信息
  • Folder - 文件夹大小监控
网络模块
  • Network - 网络接口流量
  • Connections - 网络连接数
  • Ports - 端口监听情况
  • Process Network - 进程网络使用
进程模块
  • Processes - 进程列表
  • Process Count - 进程统计
  • Process Top - 进程排行
  • Process Info - 进程详情

使用实例

1. 基本监控(默认3秒刷新)
glances
2. 指定刷新间隔
# 每秒刷新一次
glances -t 1

# 每5秒刷新一次
glances -t 5
3. 显示每核CPU使用情况
glances -1
4. 合并CPU显示
glances -2
5. 启动Web服务器模式
# 启动Web服务器(默认端口61208)
glances -w

# 指定端口
glances -w -p 8080
6. 客户端/服务器模式
# 服务器端启动
glances -s

# 客户端连接(从其他机器)
glances -c 192.168.1.100

# 指定端口连接
glances -c 192.168.1.100 -p 61209
7. 禁用特定模块
# 禁用网络模块
glances -n

# 禁用磁盘I/O模块
glances -d

# 禁用挂载点模块
glances -m

# 禁用多个模块
glances -n -d -m
8. 显示所有进程
glances -e
9. 数据导出功能
# 导出为CSV格式
glances --export csv --export-csv-file /tmp/glances.csv

# 导出为JSON格式
glances --export json --export-json-file /tmp/glances.json

# 导出到InfluxDB
glances --export influxdb

# 导出到Prometheus
glances --export prometheus
10. 配置文件使用
# 使用指定配置文件
glances -f ~/.config/glances/glances.conf

# 生成默认配置文件
glances --generate-config

# 查看当前配置
glances --config-check
11. 监控远程Docker容器
# 使用glances监控Docker容器
glances --docker

# 监控指定Docker容器
glances --docker --containers-id CONTAINER_ID
12. 批处理模式(非交互式)
# 一次性输出
glances --stdout cpu,mem,load

# 输出到文件
glances --stdout cpu,mem > /tmp/stats.txt

实际输出示例

示例1:基本监控界面
glances 3.2.5 with Python 3.8.10 / Linux 5.4.0-100-generic

ubuntu-server                          10:30:00                   up 15 days, 2:30

CPU  [  5.0%]   Core0  [|||||           5.0%]   Core2  [||||             4.0%]
Mem  [ 12.3%]   Core1  [|||||||         7.0%]   Core3  [|||              3.0%]
Swap [  0.0%]   Load average: 0.15 0.20 0.25

NETWORK     Rx/s   Tx/s   TASKS 123 (123 thr), 2 run, 121 slp, 0 oth
eth0        1.2M   0.8M
lo          0.0M   0.0M   CPU%  MEM%  VIRT   RES   PID USER      TIME+ I/O  Command
DISK I/O    R/s    W/s           5.0   2.5  1.2G  200M 1234 root     10:00 0.0  nginx
sda         120    80           15.0  20.0  3.5G  1.2G 5678 mysql    5:30:00 0.0  mysqld
sdb         50     30            2.0   1.5  500M   80M 9012 www-data 1:30 0.0  php-fpm

FILE SYS     Used  Total  Use%
/           25.0G  50.0G   50%
/home       15.0G  100.0G  15%
示例2:Web界面访问
$ glances -w
Glances Web User Interface started on http://0.0.0.0:61208/

# 在浏览器中访问:http://服务器IP:61208
示例3:客户端连接
$ glances -c 192.168.1.100
Connected to 192.168.1.100:61209
Receiving stats from remote host...

交互式快捷键

排序控制
  • c - 按CPU使用率排序
  • m - 按内存使用率排序
  • i - 按I/O使用率排序
  • p - 按进程名称排序
  • d - 按进程PID排序
显示控制
  • l - 显示/隐藏日志
  • h - 显示/隐藏帮助
  • 1 - 全局CPU视图
  • 2 - 每核CPU视图
  • f - 显示/隐藏文件系统
数据操作
  • x - 删除警告日志
  • w - 删除警告
  • e - 启用/禁用进程
  • Space - 暂停/继续刷新
  • Enter - 刷新当前显示
其他功能
  • q / Esc / Ctrl+C - 退出
  • . - 仅显示活跃进程
  • + / - - 调整刷新间隔
  • a - 自动调整排序
  • ? - 显示完整快捷键列表

实用场景

实时监控
  • 单机系统性能监控
  • 多服务器集中监控
  • 容器环境监控
  • 开发调试环境
性能分析
  • 系统瓶颈定位
  • 资源使用趋势分析
  • 应用性能调优
  • 容量规划支持
远程监控
  • 服务器集群监控
  • 远程故障诊断
  • 多地点系统监控
  • 云环境监控
数据收集
  • 监控数据导出
  • 时间序列数据收集
  • 性能指标存储
  • 报表生成

实用命令组合

# 监控远程服务器并导出数据
glances -c 192.168.1.100 --export csv --export-csv-file /tmp/remote_stats.csv

# Web界面监控多台服务器
# 在各服务器上运行:glances -s
# 在监控机上运行:glances -c server1 -c server2 -c server3

# 自动刷新并记录日志
glances -t 2 2>&1 | tee /var/log/glances_monitor.log

# 监控特定进程
glances --process-filter nginx

# 监控Docker容器
glances --docker --disable-network --disable-diskio

# 生成HTML报告
glances --export html --export-html-file /var/www/html/monitor.html

# 持续监控并发送警报
while true; do
    glances --stdout cpu,mem,load | grep -E "(CPU|MEM).*[7-9][0-9]%" && \
    echo "High resource usage!" | mail -s "Alert" admin@example.com
    sleep 60
done

配置文件详解

# ~/.config/glances/glances.conf 示例
[global]
refresh=2                 # 刷新间隔(秒)
theme=white              # 主题(white, black, grey)
disable_irq=true         # 禁用IRQ显示
disable_plugins=list     # 禁用插件列表

[cpu]
percpu=true              # 显示每核CPU
user_color=green         # 用户CPU颜色
system_color=red         # 系统CPU颜色

[mem]
warning=70               # 内存警告阈值(%)
critical=90              # 内存临界阈值(%)

[diskio]
disable=true             # 禁用磁盘IO模块

[network]
cumulative=true          # 累计网络统计
disable=true             # 禁用网络模块

[process]
disable=true             # 禁用进程列表
max_processes=50         # 最大显示进程数

[export]
csv=true                # 启用CSV导出
csv_file=/tmp/glances.csv
json=true               # 启用JSON导出
json_file=/tmp/glances.json

[server]
bind=0.0.0.0            # 服务器绑定地址
port=61209              # 服务器端口
password=secret         # 连接密码(可选)
注意事项:
  • glances需要Python环境,确保已安装Python 2.7+或Python 3.4+
  • Web服务器模式默认监听所有接口,生产环境建议设置防火墙规则
  • 客户端/服务器模式传输未加密,敏感环境建议使用SSH隧道
  • 监控数据可能占用一定系统资源,特别是在高刷新频率时
  • 导出功能需要额外依赖,如influxdb-client用于InfluxDB导出
  • glances的插件系统允许扩展功能,但需要额外安装插件包
  • 容器监控需要Docker API访问权限

glances与其他工具对比

特性 glances top/htop atop nmon
跨平台支持 ✓ Linux, Windows, macOS, BSD ✗ 主要为Linux ✗ Linux △ Linux, AIX
Web界面 ✓ 内置Web服务器 ✗ 无 ✗ 无 ✗ 无
客户端/服务器 ✓ 支持远程监控 ✗ 不支持 △ 有限支持 ✗ 不支持
数据导出 ✓ CSV, JSON, InfluxDB等 ✗ 无 △ 有限导出 ✓ CSV导出
容器监控 ✓ Docker支持 △ 有限支持 ✗ 不支持 ✗ 不支持
插件系统 ✓ 支持插件扩展 ✗ 无 ✗ 无 ✗ 无
学习曲线 ✓ 简单易用 ✓ 简单 △ 中等 △ 中等
推荐用途 跨平台监控、Web展示、远程监控 快速本地监控、进程管理 专业性能分析、历史回放 性能基准测试、报表生成

安装glances

# 方法1:使用pip安装(推荐)
pip install glances
# 或
pip3 install glances

# 方法2:使用系统包管理器
# Ubuntu/Debian
sudo apt-get install glances

# CentOS/RHEL/Fedora
sudo yum install glances
# 或
sudo dnf install glances

# Arch Linux
sudo pacman -S glances

# 方法3:从源码安装
git clone https://github.com/nicolargo/glances.git
cd glances
sudo python setup.py install

# 安装可选依赖
pip install 'glances[action,browser,cloud,cpuinfo,docker,export,folders,gpu,graph,ip,raid,snmp,web,wifi]'

# 验证安装
glances --version
或
which glances

实际案例:监控解决方案

案例1:多服务器Web监控面板
#!/bin/bash
# 部署glances多服务器监控方案

# 1. 在各服务器上安装glances
for server in web1 web2 db1 cache1; do
    ssh $server "pip3 install glances"
done

# 2. 在各服务器上启动glances服务器
for server in web1 web2 db1 cache1; do
    ssh $server "nohup glances -s -p 61209 > /dev/null 2>&1 &"
done

# 3. 在监控服务器上安装glances-web
pip3 install glances[web]

# 4. 创建监控服务器配置文件
cat > ~/.config/glances/glances.conf << EOF
[global]
refresh=3
theme=white

[servers]
web1=192.168.1.101:61209
web2=192.168.1.102:61209
db1=192.168.1.103:61209
cache1=192.168.1.104:61209
EOF

# 5. 启动Web监控面板
glances -w --disable-webui --port 8080 &

echo "监控面板已启动:http://$(hostname -I | awk '{print $1}'):8080"
案例2:自动化性能监控脚本
#!/bin/bash
# 自动化性能监控和警报脚本

LOG_DIR="/var/log/glances_monitor"
DATE=$(date +%Y%m%d_%H%M%S)
ALERT_THRESHOLD=80

# 创建日志目录
mkdir -p $LOG_DIR

echo "=== 系统性能监控开始 $(date) ===" >> $LOG_DIR/monitor_$DATE.log

# 监控循环
while true; do
    CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')

    # 获取系统状态
    CPU_USAGE=$(glances --stdout cpu | grep "CPU " | awk '{print $2}' | tr -d '%[]')
    MEM_USAGE=$(glances --stdout mem | grep "MEM " | awk '{print $2}' | tr -d '%[]')
    LOAD_AVG=$(glances --stdout load | grep "Load average:" | awk '{print $3, $4, $5}')

    # 记录到日志
    echo "[$CURRENT_TIME] CPU: ${CPU_USAGE}%, MEM: ${MEM_USAGE}%, Load: $LOAD_AVG" >> $LOG_DIR/monitor_$DATE.log

    # 检查阈值并发送警报
    if (( $(echo "$CPU_USAGE > $ALERT_THRESHOLD" | bc -l) )); then
        echo "[$CURRENT_TIME] 警报:CPU使用率过高: ${CPU_USAGE}%" >> $LOG_DIR/alerts_$DATE.log
        echo "CPU使用率过高: ${CPU_USAGE}%" | mail -s "CPU警报" admin@example.com
    fi

    if (( $(echo "$MEM_USAGE > $ALERT_THRESHOLD" | bc -l) )); then
        echo "[$CURRENT_TIME] 警报:内存使用率过高: ${MEM_USAGE}%" >> $LOG_DIR/alerts_$DATE.log
        echo "内存使用率过高: ${MEM_USAGE}%" | mail -s "内存警报" admin@example.com
    fi

    # 每小时生成报告
    if [ $(date +%M) -eq "00" ]; then
        echo "=== 每小时报告 $(date) ===" >> $LOG_DIR/hourly_$DATE.log
        glances --stdout cpu,mem,load,diskio,network >> $LOG_DIR/hourly_$DATE.log
        echo "" >> $LOG_DIR/hourly_$DATE.log
    fi

    sleep 30  # 每30秒检查一次
done

相关命令

top/htop

传统进程监控工具

查看详情
atop

高级系统监控工具

查看详情
nmon

性能基准测试工具

查看详情