1. 首页 > Linux教程 > 正文

Linux教程FG161-top命令系统监控

内容大纲

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

1. top命令概述

top命令是Linux系统中最常用的实时系统监控工具,它可以实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

风哥提示:

# top命令的主要功能
# 实时显示进程信息:CPU、内存、运行时间等
# 系统整体信息:负载、进程数、CPU使用率、内存使用率
# 交互式操作:排序、过滤、杀死进程等
# 配置选项:刷新间隔、显示字段等

2. top命令基本使用

使用top命令查看系统实时状态。

更多视频教程www.fgedu.net.cn

# top命令基本使用

# 1. 启动top命令
[root@localhost ~]# top
top – 10:00:00 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 123456 10240 4096 S 2.5 0.1 0:00.05 systemd
2345 root 20 0 65536 5120 2048 S 1.0 0.1 0:00.03 kworker/u4:0
3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld
4567 nginx 20 0 262144 51200 20480 S 0.3 0.6 0:12.34 nginx
5678 root 20 0 131072 10240 4096 R 0.2 0.1 0:00.01 top

# 2. 查看特定用户的进程
[root@localhost ~]# top -u mysql
top – 10:00:10 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12
Tasks: 5 total, 0 running, 5 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld
3457 mysql 20 0 1048576 262144 51200 S 0.3 3.1 0:45.67 mysqld
3458 mysql 20 0 524288 131072 25600 S 0.2 1.5 0:23.89 mysqld
3459 mysql 20 0 262144 65536 12800 S 0.1 0.8 0:12.34 mysqld
3460 mysql 20 0 131072 32768 6400 S 0.1 0.4 0:06.78 mysqld

# 3. 查看特定进程
[root@localhost ~]# top -p 3456
top – 10:00:20 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld

# 4. 设置刷新间隔
[root@localhost ~]# top -d 5
top – 10:00:25 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 123456 10240 4096 S 2.5 0.1 0:00.05 systemd
2345 root 20 0 65536 5120 2048 S 1.0 0.1 0:00.03 kworker/u4:0
3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld
4567 nginx 20 0 262144 51200 20480 S 0.3 0.6 0:12.34 nginx
5678 root 20 0 131072 10240 4096 R 0.2 0.1 0:00.01 top

# 5. 批次模式显示
[root@localhost ~]# top -n 1 -b
top – 10:00:30 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 123456 10240 4096 S 2.5 0.1 0:00.05 systemd
2345 root 20 0 65536 5120 2048 S 1.0 0.1 0:00.03 kworker/u4:0
3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld
4567 nginx 20 0 262144 51200 20480 S 0.3 0.6 0:12.34 nginx
5678 root 20 0 131072 10240 4096 R 0.2 0.1 0:00.01 top

3. top命令交互操作

学习交流加群风哥QQ113257174

在top命令中使用交互式操作。

# top命令交互操作

# 1. 按CPU使用率排序(按P键)
# 在top界面中按P键,进程将按CPU使用率排序

# 2. 按内存使用率排序(按M键)
# 在top界面中按M键,进程将按内存使用率排序

# 3. 按运行时间排序(按T键)
# 在top界面中按T键,进程将按运行时间排序

# 4. 显示所有CPU(按1键)
# 在top界面中按1键,将显示每个CPU的使用情况

# 5. 显示线程信息(按H键)
# 在top界面中按H键,将显示线程信息

# 6. 杀死进程(按k键)
# 在top界面中按k键,然后输入要杀死的进程ID

# 7. 改变进程优先级(按r键)
# 在top界面中按r键,然后输入进程ID和新的优先级

# 8. 显示特定用户的进程(按u键)
# 在top界面中按u键,然后输入用户名

# 9. 切换颜色显示(按z键)
# 在top界面中按z键,将切换颜色显示

# 10. 退出top(按q键)
# 在top界面中按q键,将退出top

4. top命令高级功能

使用top命令的高级功能。

# top命令高级功能

# 1. 自定义显示字段
[root@localhost ~]# top -o %CPU
top – 10:00:40 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 123456 10240 4096 S 2.5 0.1 0:00.05 systemd
2345 root 20 0 65536 5120 2048 S 1.0 0.1 0:00.03 kworker/u4:0
3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld
4567 nginx 20 0 262144 51200 20480 S 0.3 0.6 0:12.34 nginx
5678 root 20 0 131072 10240 4096 R 0.2 0.1 0:00.01 top

# 2. 显示指定数量的进程
[root@localhost ~]# top -n 10
top – 10:00:50 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 123456 10240 4096 S 2.5 0.1 0:00.05 systemd
2345 root 20 0 65536 5120 2048 S 1.0 0.1 0:00.03 kworker/u4:0
3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld
4567 nginx 20 0 262144 51200 20480 S 0.3 0.6 0:12.34 nginx
5678 root 20 0 131072 10240 4096 R 0.2 0.1 0:00.01 top
6789 root 20 0 65536 5120 2048 S 0.1 0.1 0:00.02 sshd
7890 root 20 0 32768 2048 1024 S 0.1 0.0 0:00.01 bash
8901 root 20 0 16384 1024 512 S 0.0 0.0 0:00.00 cron
9012 root 20 0 8192 512 256 S 0.0 0.0 0:00.00 anacron
0123 root 20 0 4096 256 128 S 0.0 0.0 0:00.00 systemd-journal

# 3. 使用配置文件
[root@localhost ~]# cat > ~/.toprc << 'EOF' # top配置文件 top's Config File (Linux processes with windows) Id:i, Mode_altscr=0, Mode_irixps=1, Delay_time=3.0, Curwin=0 Def fieldscur=AEHIOQTWKNMBcdfgGplrsuvyzX winflags=12345678, sortindx=18, maxtasks=0 summclr=1, msgsclr=1, headclr=1, taskclr=1 EOF # 4. 使用配置文件启动top [root@localhost ~]# top top - 10:01:00 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12 Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1234 root 20 0 123456 10240 4096 S 2.5 0.1 0:00.05 systemd 2345 root 20 0 65536 5120 2048 S 1.0 0.1 0:00.03 kworker/u4:0 3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld 4567 nginx 20 0 262144 51200 20480 S 0.3 0.6 0:12.34 nginx 5678 root 20 0 131072 10240 4096 R 0.2 0.1 0:00.01 top

更多学习教程公众号风哥教程itpux_com

5. top命令实战案例

使用top命令监控系统性能。

# 实战案例:使用top命令监控系统性能

# 1. 启动top命令
[root@localhost ~]# top
top – 10:01:10 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 123456 10240 4096 S 2.5 0.1 0:00.05 systemd
2345 root 20 0 65536 5120 2048 S 1.0 0.1 0:00.03 kworker/u4:0
3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld
4567 nginx 20 0 262144 51200 20480 S 0.3 0.6 0:12.34 nginx
5678 root 20 0 131072 10240 4096 R 0.2 0.1 0:00.01 top

# 2. 按CPU使用率排序(按P键)
# 在top界面中按P键,进程将按CPU使用率排序

# 3. 按内存使用率排序(按M键)
# 在top界面中按M键,进程将按内存使用率排序

# 4. 显示所有CPU(按1键)
# 在top界面中按1键,将显示每个CPU的使用情况

# 5. 查看特定用户的进程(按u键,然后输入mysql)
# 在top界面中按u键,然后输入mysql

# 6. 查找高CPU使用率的进程
[root@localhost ~]# top -b -n 1 | head -20
top – 10:01:20 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 123456 10240 4096 S 2.5 0.1 0:00.05 systemd
2345 root 20 0 65536 5120 2048 S 1.0 0.1 0:00.03 kworker/u4:0
3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld
4567 nginx 20 0 262144 51200 20480 S 0.3 0.6 0:12.34 nginx
5678 root 20 0 131072 10240 4096 R 0.2 0.1 0:00.01 top

# 7. 查找高内存使用率的进程
[root@localhost ~]# top -b -n 1 -o %MEM | head -20
top – 10:01:30 up 1 day, 2:30, 4 users, load average: 0.10, 0.15, 0.12
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.0 sy, 0.0 ni, 96.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 8192.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3456 mysql 20 0 2097152 524288 102400 S 0.5 6.3 1:23.45 mysqld
3457 mysql 20 0 1048576 262144 51200 S 0.3 3.1 0:45.67 mysqld
3458 mysql 20 0 524288 131072 25600 S 0.2 1.5 0:23.89 mysqld
3459 mysql 20 0 262144 65536 12800 S 0.1 0.8 0:12.34 mysqld
3460 mysql 20 0 131072 32768 6400 S 0.1 0.4 0:06.78 mysqld

# 8. 创建监控脚本
[root@localhost ~]# cat > /usr/local/bin/top-monitor.sh << 'EOF' #!/bin/bash # script.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: http://www.fgedu.net.cn # top监控脚本 LOG_FILE="/var/log/top-monitor.log" ALERT_EMAIL="admin@fgedu.net.cn" # 记录日志函数 log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}

# 检查CPU使用率
check_cpu() {
CPU_USAGE=$(top -b -n 1 | grep “Cpu(s)” | awk ‘{print $2}’ | sed ‘s/us,//’)

if [ $(echo “$CPU_USAGE > 80” | bc) -eq 1 ]; then
log “WARNING: CPU usage is ${CPU_USAGE}%”
echo “CPU usage is ${CPU_USAGE}%” | mail -s “WARNING: CPU usage alert” $ALERT_EMAIL
fi
}

# 检查内存使用率
check_memory() {
MEMORY_USAGE=$(free | grep Mem | awk ‘{printf(“%.0f”), $3/$2 * 100.0}’)

if [ “$MEMORY_USAGE” -gt 80 ]; then
log “WARNING: Memory usage is ${MEMORY_USAGE}%”
echo “Memory usage is ${MEMORY_USAGE}%” | mail -s “WARNING: Memory usage alert” $ALERT_EMAIL
fi
}

# 主函数
main() {
log “Starting top monitoring…”
check_cpu
check_memory
log “Top monitoring completed.”
}

# 执行主函数
main
EOF

# 9. 设置脚本执行权限
[root@localhost ~]# chmod +x /usr/local/bin/top-monitor.sh

# 10. 配置定时任务
[root@localhost ~]# echo “*/5 * * * * root /usr/local/bin/top-monitor.sh” > /etc/cron.d/top-monitor

# 11. 重启cron服务
[root@localhost ~]# systemctl restart crond

# 12. 测试监控脚本
[root@localhost ~]# /usr/local/bin/top-monitor.sh

# 13. 查看日志
[root@localhost ~]# tail -f /var/log/top-monitor.log
[2026-04-03 10:01:40] Starting top monitoring…
[2026-04-03 10:01:45] Top monitoring completed.

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息