首页 > 系统相关 >Linux命令:TOP

Linux命令:TOP

时间:2023-12-07 21:31:35浏览次数:24  
标签:20 0.0 TOP 命令 Linux 进程 00.00 root CPU

省流:

用一张图来解释top命令,它就是:

1.png

解释

Top 命令用于显示Linux的运行状态,它提供了一个动态的,实时的系统监控视图。

一般情况下,这个命令会展示系统运行状态和各线程任务运行状态。

在这篇博客中,我将逐条解释其中的对应信息。

输入

top

后,会进入交互式命令模式。

2.png

按下q退出。

上述内容:

top - 09:25:41 up 1 min,  3 users,  load average: 0.27, 0.11, 0.04
Tasks: 127 total,   1 running, 126 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995488 total,   465908 free,   360852 used,   168728 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   488308 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                           
     1 root      20   0  193552   6664   4160 S   0.0  0.7   0:01.78 systemd                                                                                                                                                         
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                                                          
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0                                                                                                                                                                       
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                                                                                                      
     5 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kworker/u256:0                                                                                                                                                                    
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.04 ksoftirqd/0                                                                                                                                                                       
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.04 migration/0                                                                                                                                                                       
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                                                                                                            
     9 root      20   0       0      0      0 S   0.0  0.0   0:00.17 rcu_sched                                                                                                                                                                         
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain                                                                                                                                                                     
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 watchdog/0                                                                                                                                                                        
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 watchdog/1                                                                                                                                                                        
    13 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 migration/1                                                                                                                                                                       
    14 root      20   0       0      0      0 S   0.0  0.0   0:00.01 ksoftirqd/1                                                                                                                                                                       
    15 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0                                                                                                                                                                       
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                                                                                                                                                      
    18 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kdevtmpfs                                                                                                                                                                         
    19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns                                                                                                                                                                             
    20 root      20   0       0      0      0 S   0.0  0.0   0:00.00 khungtaskd                                                                                                                                                                        
    21 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 writeback                                                                                                                                                                         
    22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kintegrityd                                                                                                                                                                       
    23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset                                                                                                                                                                            
    24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset                                                                                                                                                                            
    25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset                                                                                                                                                                            
    26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kblockd                                                                                                                                                                           
    27 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 md  

前五行是系统运行信息,后面是具体线程信息。

系统信息

第一行

top - 09:25:41 up 1 min,  3 users,  load average: 0.27, 0.11, 0.04

09:25:41:系统时间。

up 1 min:系统运行不到一分钟。

up 70 days, 16:44 :系统运行70天又16小时44分钟。

3 users:3个用户登录系统。

load average:0.27,0.11,0.04:系统1min,5min,15min的负载状况。

如果值大于5,则系统可能过载运行。

第二行

Tasks: 127 total,   1 running, 126 sleeping,   0 stopped,   0 zombie

总共运行了127个命令:1个运行中、126个休眠中、0个已结束和0个僵尸进程。

第三行

%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

0.0 us:用户空间占用CPU百分比。

0.0 sy:内核空间占用CPU百分比。

0.0ni:用户进程内改变过优先级的进程占用CPU百分比。

100.0 id:空闲CPU百分比。

我的CPU大部分处于空闲,因为我没有运行任何高CPU负载的任务。

0.0 wa:等待中CPU百分比(如果为高,则CPU正在等待I/O)。

0.0 hi:硬中断(Hardware IRQ)占用CPU的百分比。

0.0 si:软中断(Software Interrupts)占用CPU的百分比。

0.0 st:等待访问物理CPU的虚拟CPU时间百分比。

最后两行

KiB Mem :   995488 total,   465908 free,   360852 used,   168728 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   488308 avail Mem
KiB Mem

9955488 total:已消耗内存。

465908 free:可用内存。

360852 used:已消耗内存。

168728 buff/cache:要写入的缓冲信息量。

KiB Swap

2097148 total:交换空间内存总数。

2097148 free:可用交换空间内存。

==0 used:已使用交换空间内存。==

我们需要特别注意交换空间的已用内存(高亮部分)。

如果这个值不断变化,则证明内核和交换空间在不断交换内存,表明内存不足。

还需要注意KiB Mem中的free表示的是==未纳入内核管理的内存==,而不是实际空闲内存。

任务管理

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                           
     1 root      20   0  193552   6664   4160 S   0.0  0.7   0:01.78 systemd                                                                                                                                                         
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                                                          
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0                                                                                                                                    
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
     
     ......

PID 进程id

USER 进程所有者的用户名

PR 优先级

NI Nice值,负值表示高优先级,正值表示低优先级

什么是Nice值

VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR 共享内存大小,单位kb

S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU 上次更新到现在的CPU时间占用百分比

%MEM 进程使用的物理内存百分比

TIME+ 进程使用的CPU时间总计,单位1/100秒

COMMAND 命令名/命令行

进程状态

R 是 Running 或 Runnable 的缩写,表示进程在 CPU 的就绪队列中,正在运行或者正在等待运行。

D 是 Disk Sleep 的缩写,也就是不可中断状态睡眠(Uninterruptible Sleep),一般表示进程正在跟硬件交互,并且交互过程不允许被其他进程或中断打断。

Z 是 Zombie 的缩写,它表示僵尸进程,也就是进程实际上已经结束了,但是父进程还没有回收它的资源(比如进程的描述符、PID 等)。

S 是 Interruptible Sleep 的缩写,也就是可中断状态睡眠,表示进程因为等待某个事件而被系统挂起。当进程等待的事件发 生时,它会被唤醒并进入 R 状态。

I 是 Idle 的缩写,也就是空闲状态,用在不可中断睡眠的内核线程上。硬件交互导致的不可中断进程用 D 表示,但对某些内核线程来说,它们有可能实际上并没有任何负载,用 Idle 正是为了区分这种情况。D 状态的进程会导致平均负载升高, I 状态的进程却不会。

参数选项

top -d 3

设置更新时间为3秒(默认为5秒)。

top -n 2

最多显示两次刷新。

top -P

命令模式下的按键命令:

以下命令严格区分大小写。

?:显示在top当中可以输入的命令

P:以CPU的使用资源降序排序显示,默认

M:以内存的使用资源降序排序显示

N:以pid降序排序显示

T:由进程使用的时间累计排序显示

k:给某一个pid一个信号。可以用来杀死进程

r:给某个pid重新定制一个nice值(即优先级)

q:退出top(用ctrl+c也可以退出top)。

1:数字1,可以查看CPU核心的个数及详细信息。

排查高CPU占用基本思路(Java为例)

1.使用top命令,然后按P按照CPU使用率降序排序,找到占用CPU过高的进程id。

2.使用`ps -mp [进程id] -o THREAD,tid,time | sort -rm`获取线程信息,并找到占用CPU高的线程。

3.使用`echo 'obase=16;[线程id]' | bc`或`echo 'obase=16;[线程id]' | printf "%x\n" [线程id]`将线程ID转为16进制。

4.使用`jstack 进程id | grep "线程id的16进制" -A 30`打印线程的堆栈信息。

5.从堆栈信息中找到是程序中的那几行代码是一直处于running状态的,从而定位问题。

6.定位问题后,将进程结束。

学无止境

标签:20,0.0,TOP,命令,Linux,进程,00.00,root,CPU
From: https://blog.51cto.com/ErickRen/8727960

相关文章

  • node.js - 在linux系统上安装和配置nodejs
    step1:根据自己的系统架构下载nodejs软件包https://nodejs.org/en/download/curl-Ohttps://nodejs.org/dist/v20.10.0/node-v20.10.0-linux-arm64.tar.xzstep2:创建目录sudomkdir-p/usr/local/lib/nodejsstep3:解压二进制软件包sudotar-xJvfnode-v20.10.0-lin......
  • Linux I\O重定向与管道
    一:I\O重定向 linu系统中的三种I/O设备所代表的编号分别是:标准输入(STDIN),文件描述符为0,默认从键盘获取输入;标准输出(STDOUT),文件描述符为1,默认输出到显示屏;标准错误(STDERR),文件描述符为2,默认输出到显示屏。 I/O重定向就是为了改变默认输入、输出的位置:>:表示标准输出覆盖重定向;>>:......
  • Linux文件权限
    一:基本权限UGO权限对象:u:属主(拥有者)g:属组(拥有者同组)o:其他人(其他用户)特殊对象:a:所有人(u+g+o) 权限类型:符号表示数字表示说明符号表示数字表示说明r4只读rx5读和执行w2只写wx3写和执行x1只执行rwx7读、写和执行rw6读和写---0无权限......
  • window 使用cmd命令生成项目的目录树
    window使用tree命令生成目录树,只有/F和/A命令,并不满足我们需要过滤不必要文件和排序等等需求,所以我使用了一个插件tree-node-cli。 在cmd窗口安装tree-node-cli插件npminstall-gtree-node-cli 插件安装成功后在cmd窗口执行命令,执行命令前使用cd命令切到项目文件夹......
  • UEFI代码中执行UEFI shell命令
    在UEFI代码中执行UEFIshell命令,类似于linux下C代码执行system("command")系统调用。MyUefiShell.inf内容如下:[Defines]INF_VERSION=1.25......
  • Linux端ALSA音频处理库
    1.项目介绍项目Github地址:https://github.com/alsa-project/alsa-libALSA(AdvancedLinuxSoundArchitecture)是Linux操作系统上的音频处理框架。它提供了对音频设备的抽象和控制,使应用程序能够与音频硬件进行交互。ALSA库是ALSA项目的一部分,它为开发者提供了一组API(应用程序编......
  • does not have a SELinux domain defined. android 开机启动
    问题:dmesg [  46.089306]init:Servicemysvc2 doesnothaveaSELinuxdomaindefined. servicemysvc1/system/vendor/bin/app1classmainuserrootgrouprootsystemreadprocdisabledwritepid/dev/cpuset/foreground/tasksservicemysvc2......
  • java打包好的jar包在Linux服务器上指定端口并后台运行命令
    前提条件:a.已经在Linux服务器上安装了java环境。b.切换到jar包所在的目录下。c.运行方式为:java-jar运行。举例说明:包名  运行端口test.jar  8080命令如下:java-jar-Dserver.port=8080test.jar&>test.out&1解释:1.表示将test.jar这个jar包运行在8080端口(前提是端口......
  • java使用ftp连接linux处理文件
    1、Maven依赖<!--FTP使用包--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.6</version></dependency>......
  • linux-ELK安装配置
    前言:  ELK是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash和Kibana。   •Elasticsearch是一个搜索和分析引擎。   •Logstash是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如Elasticsearch等存储库中。......