Linux 实时查看进程 top

本文介绍了Linux系统中的top命令,用于实时查看进程、CPU、内存和系统负载等信息。通过实例演示了如何解释%CPU大于100的原因,并提供了操作命令和消耗资源的Java程序示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux 实时查看进程 top

top命令用于动态实时的查看进程信息,以及系统信息,包括:CPU、内存、负载。

为更好的理解各数据,我们运行了一个消耗系统CPU与内存的程序。本文结尾附JAVA程序。

原文地址:Linux 实时查看进程 top | 小步教程

基本语法

top

运行结果

img

1 结果说明

第1行 综合说明

top - 05:24:40 up 3:34 :当前时间为05:24:40,已运行时间3:34(小时:分钟)

3 users :当前登录用户3个。

load average: 2.04, 2.73, 2.21 :系统负载平均值:过去1分钟的均值,过去5分钟的均值,过去15分钟的均值。

第2行 进程情况

Tasks: 212 total, :进程的总数量212

1 running :正在运行进程的数量1

211 sleeping, 0 stopped, 0 zombie :睡眠进程,停止进程,僵尸进程的数量。

第3行 CPU情况

%Cpu(s): 55.8 us, 0.8 sy, 0.0 ni, 43.4 id:用户进程使用率,系统进程使用率,nice用户进程使用率, idle进程使用率

0.0 wa, 0.0 hi, 0.0 si, 0.0 st:等待IO,硬件中断,软件中断,抢断 (的消耗时间)

第4行 内存情况

KiB Mem : 1862996 total, 472880 free, 951280 used, 438836 buff/cache

总大小:1.8G,空闲0.47G,已使用0.95G,缓存0.43G。

第5行 SWAP情况

KiB Swap: 2097148 total, 2097148 free, 0 used. 732068 avail Mem

交换区 总大小2G,空闲2G,已使用0,可一次性分配给程序的可用大小:0.73G。

第6行 进程表格

标题示例值说明
PID5788Process ID,进程ID
USERroot用户名
PR20priority,进程优先级
NI0nice,用户进程nice值
VIRT2898832virtual,虚拟内存大小
RES435836常驻内存大小
SHR12232共享内存大小
SSState,状态。R表示运行中;S表示睡眠。
%CPU227.6CPU使用率
%MEM23.4内存使用率
TIME+2:22.25累计使用CPU时间
COMMANDjava运行命令

2 进程%CPU为什么大于100

示例数据中

汇总%Cpu(s): 54.3 us,用户进程CPU总共占54.3%;

而java进程%CPU为227.6,大于100,为什么?

原因

汇总值是以所有CPU个数的对应时间为比例进行计算;

进程%CPU是以单个CPU的对应时间为比例进行计算。

查看CPU个数设置

img

CPU内核数为4 。

54.3*4=217.2,约等于227.6 。

3 操作命令

top运行结果界面实时更新,也可以同时按操作命令键,执行相应操作。

操作命令说明
回车或空格立即刷新
c显示命令的详细信息
i只显示占用资源高的进程;再次按显示所有进程
o添加过滤
ctrl+o显示过滤
=取消所有过滤
q退出

例1:查看命令详情

按下c运行结果

img

默认情况,只有命令名,没有运行参数与选项。C后显示。

例2:查看高负载进程

按下i运行结果

img

其它低负载进程不再显示。连续按i进行切换。

例3:过滤

按o,然后输入过滤条件 COMMAND=java

img

回车后

img

Ctrl+O查看过滤条件

img

= 取消过滤。

4 附:模拟消耗资源的程序

XiaobuteachBig.java

import java.util.ArrayList;

/**
 * Author: 小步教程  www.xiaobuteach.com
 * 用于消耗CPU与内存
 * 消耗内存:约1G
 * 消耗CPU:会尽量消耗,其中有死循环
 */
public class XiaobuteachBig {
    public static void main(String[] args) {

        for(;true;){
            ArrayList arrayList = new ArrayList();

            for (int i = 0; i < 100; i++) {
                byte[] byteArr = new byte[1000000];
                byteArr[i] = (byte)i ;
                arrayList.add(byteArr);
            }

        }
    }
}

已经编绎好XiaobuteachBig.class,可通过下方群获取,或者自行编绎。

将XiaobuteachBig.class上传到/code目录

img

cd到/code目录,然后执行

[root@xiaobuteach code]# java XiaobuteachBig

img

代码会一直运行,命令提示符不会弹出。要执行其它命令需要新打开一个连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值