Linux shell编程学习笔记62: top命令 linux下的任务管理器

0 前言

top命令是Unix 和 Linux下常用的性能分析工具,提供了一个动态的、交互式的实时视图,显示系统的整体性能信息,以及正在运行的进程的相关信息,包括各个进程的资源占用状况,类似于Windows的任务管理器。

1 top命令 格式、选项和操作

1.1 top命令 格式

复制代码
[purpleendurer @ bash ~] top --help
top: inappropriate '-help'
Usage:
  top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
[purpleendurer @ bash ~] 

top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]

1.2 top命令选项

选项 功能
-b 以批处理(batch)模式运行,直接将结果输出到文件。
-c 显示完整的命令行而不截断。
-d <秒数> 指定 top 命令的刷新时间间隔,单位为秒。
-H 在进程信息中显示线程详细信息。
-i 不显示闲置(idle)或无用的进程。
-n <次数> 指定 top 命令运行的次数后自动退出。
-p <进程ID> 仅显示指定进程ID的信息。
-S 累计显示进程的 CPU 使用时间。
-u <用户名> -U <用户名> 仅显示指定用户名的进程信息。

1.3 top命令操作说明

top命令提供了动态的、交互式的实时视图,可以进行以下操作:

操作 说明
Ctrl+L 擦除并且重写屏幕
K 终止一个进程。 系统将提示用户输入需要终止的进程PID,以及需要给该进程发送什么样的信号。 默认值是信号15。一般的终止进程可以使用15信号。如果不能正常结束那就使用信号9强制结束该进程。 在安全模式中此命令被屏蔽。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。 输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S 切换到累计模式。
s 改变两次刷新之间的延迟时间。 系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。 输入0值则系统将不断刷新,默认值是5 s。 需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F 从当前显示中添加或者删除项目。
o或者O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息。
m 切换显示内存信息。
t 切换显示进程和CPU状态信息。
c 切换显示命令名称和完整命令行。
M 根据驻留内存大小进行排序。
P 根据CPU使用百分比大小进行排序。
T 根据时间/累计时间进行排序。
W 将当前设置写入~/.toprc文件中。

2 top命令实例

复制代码
top - 23:49:06 up 3 min,  0 users,  load average: 0.01, 0.03, 0.00
Tasks:   5 total,   1 running,   4 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.2 hi,  0.0 si,  0.0 st
KiB Mem :  3855948 total,  2028368 free,   257300 used,  1570280 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  3350552 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                        
      1 csdn      20   0   40356   5120   3748 S   0.0  0.1   0:00.19 zsh                                                                                            
     46 csdn      20   0   40156   5112   3844 S   0.0  0.1   0:00.03 zsh                                                                                            
     72 csdn      20   0   40156   5024   3780 S   0.0  0.1   0:00.03 zsh                                                                                            
    100 csdn      20   0   15124   3540   3124 S   0.0  0.1   0:00.00 bash                                                                                           
    114 csdn      20   0   59472   4176   3640 R   0.0  0.1   0:00.00 top                          

显示的信息比较丰富,我们逐行分析说明。

第一行:系统当前状态

1.系统时间:23:48:30

2.运行时间:up 3 min,

3.当前登录用户:0 users

4.负载均衡(uptime) load average: 0.01, 0.03, 0.00

average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。

如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

备注:第一行信息内容 同 uptime 命令的执行结果相同

第二行:任务(进程)队列信息 Tasks

1.总进程数量 :5 total

2.运行进程数量:1 running

3.休眠进程数量:4 sleeping

4.停止进程数量:0 stopped

5.僵尸进程数量:0 zombie

第三行:cpu状态信息 %Cpu(s)

1.用户空间占用CPU的百分比(user space) :0.8% us

2.内核空间占用CPU的百分比(sysctl) :0.2% sy

3.改变过优先级的进程占用CPU的百分比( nice) :0.0% ni

4.空闲CPU百分比(idolt) :99.0% id

5.IO等待占用CPU的百分比(wait) :0.0% wa

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

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

8.被虚拟化程序偷取的 CPU 时间百分比(steal) :0.0 st

第四行:内存状态 KiB Mem

1.内存总量 :3855948 total

2.未用内存数量 :2028368 free

3.已用内存数量 :257300 used

4.缓存的内存量 :1570280 buff/cache

第五行:交换分区信息 swap

1.总量 :0 total

2.未用 :0 free

3.已用 :0 used

4.利用内存:3350552 avail Mem

第六行:空行

第七行以下:各进程(任务)的状态监控

1.PID: 进程id

2.USER : 进程所有者

3.PR : 进程优先级

  1. NI:nice值。负值表示高优先级,正值表示低优先级

5.VIRT(virtual memory usage 虚拟内存):进程使用的虚拟内存总量,包括进程使用的代码(code)、数据(data)、共享库(shared libraries),以及被换出(swap out)到交换区和映射了(map)但尚未使用(未载入实体内存)的部分等,单位kb。

VIRT=SWAP+RES

6.RES(resident memory usage 常驻内存):进程使用的、未被换出的物理内存大小,单位kb。

RES=CODE+DATA

7.SHR(shared memory 共享内存**)** :共享内存大小,单位kb

8.S:进程状态。

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

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

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

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

  1. COMMAND:进程运行的命令(命令名/命令行)

注:计算某个进程所占的物理内存大小公式:RES -- SHR

相关推荐
小成2023032026515 分钟前
Linux高级02
linux·开发语言
mounter62516 分钟前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
++==27 分钟前
Linux 进程间通信与线程同步技术详解:IPC 机制、线程 API、同步工具与经典同步问题
linux
特长腿特长42 分钟前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy5381 小时前
Linux环境变量
linux·运维·服务器
pluvium271 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh
无级程序员1 小时前
centos7 安装 llvm-toolset-7-clang出错的问题解决
linux·centos
CHHC18802 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器
云栖梦泽3 小时前
Linux内核与驱动:9.Linux 驱动 API 封装
linux·c++
si莉亚4 小时前
ROS2安装EVO工具包
linux·开发语言·c++·开源