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秒刷新)
2. 指定刷新间隔
# 每秒刷新一次
glances -t 1
# 每5秒刷新一次
glances -t 5
3. 显示每核CPU使用情况
4. 合并CPU显示
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. 显示所有进程
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
相关命令