linux运维一天一个shell命令之 top详解
创始人
2024-11-15 04:33:37
0

概念:

top 命令是 Unix 和类 Unix 操作系统(如 Linux、macOS)中一个常用的系统监控工具,它提供了一个动态的实时视图,显示系统的整体性能信息,如 CPU 使用率、内存使用情况、进程列表等。

基本用法

root@xxx:~# top top - 18:54:15 up 12 days,  4:10,  1 user,  load average: 0.04, 0.10, 0.14 Tasks: 594 total,   1 running, 344 sleeping,   0 stopped,   0 zombie %Cpu(s):  0.1 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st KiB Mem : 46087936 total, 22898740 free,  1414488 used, 21774708 buff/cache KiB Swap: 51999996 total, 51999996 free,        0 used. 42175156 avail Mem      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  241197 root      20   0   31980   4308   3312 R   0.3  0.0   0:00.06 top                                                                                                                                                                         1 root      20   0  178264   7040   4228 S   0.0  0.0  11:14.29 systemd ........ 

#启动top命令后,你会看到一个像这样的界面(实际输出可能因系统和配置的不同而略有差异)

界面各部分的解释

系统摘要信息

top - 18:54:15 up 12 days,  4:10,  1 user,  load average: 0.04, 0.10, 0.14 当前时间:18:54:15 系统运行时间:up 12 days, 4:10 登录用户数:1 users 系统负载平均值:load average: 0.04, 0.10, 0.14(分别是1分钟、5分钟和15分钟的平均负载) 

任务信息

Tasks: 594 total,   1 running, 344 sleeping,   0 stopped,   0 zombie 任务总数: 594 total 运行中的任务:1 running 睡眠中的任务:344 sleeping 停止的任务:0 stopped 僵尸任务:0 zombie 

CPU 使用率

%Cpu(s):  0.1 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 用户态CPU时间(user space):0.1% us  (用户态占用CPU的时间,即用户进程或应用程序执行的时间。当应用程序正在执行时,CPU处于用户态) 系统态CPU时间(system space):0.0% sy  (系统态占用CPU的时间,即操作系统内核进程执行的时间。当操作系统内核进程正在执行时,CPU处于系统态) 低优先级用户态时间(nice):0.0% ni  (改变过优先级的进程所占用的CPU时间。nice值用于调整进程的优先级,低nice值的进程具有较高的优先级) 空闲时间:99.9% id   (空闲时间,即CPU没有执行任何任务的时间。这是CPU未被占用的时间) I/O等待时间:0.0% wa  (等待I/O操作完成的时间,即CPU等待输入输出操作完成的时间。当CPU等待磁盘读写等I/O操作完成时,会处于等待状态) 硬中断时间:0.0% hi   (处理硬件中断所花费的时间。硬件中断是由硬件产生的中断,如时钟中断或键盘中断) 软中断时间:0.0% si  (处理软件中断所花费的时间。软件中断是由操作系统产生的中断,用于处理各种系统事件) 虚拟机偷取时间:0.0% st (虚拟化环境中,其他虚拟机占用的CPU时间。在虚拟化环境中,多个虚拟机共享物理资源,其中一些时间可能被其他虚拟机占用) 

内存使用情况

KiB Mem : 46087936 total, 22898740 free,  1414488 used, 21774708 buff/cache  总内存:46087936 KiB 空闲内存:22898740 KiB 已用内存:1414488 KiB 缓存和缓冲区内存:21774708 KiB  KiB Swap: 51999996 total, 51999996 free,        0 used. 42175156 avail Mem 总交换空间:51999996 KiB 空闲交换空间:51999996 KiB 已用交换空间:0 KiB 可用内存:42175156 KiB 

进程列表

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  1 root      20   0  178264   7040   4228 S   0.0  0.0  11:14.29 systemd  每个进程的详细信息,包括: PID: 进程PID编号 USER: 进程所有者 PR:优先级 NI: nice值 VIRT:虚拟内存大小 (Kb) RES:常驻内存大小 (Kb) SHR:共享内存大小(Kb) S:进程状态 %CPU:CPU使用率 %MEM:内存使用率 TIME+:运行时间 COMMAND: 命令名/命令行  ##S:进程状态: 运行状态:R (Running or Runnable) 进程正在 CPU 上运行或准备运行。它处于可执行状态,等待分配 CPU 时间片。 中断状态:S (Interruptible Sleep) 进程正在等待某个事件(如 I/O 操作)完成,可以被中断。 不可中断睡眠状态:D (Uninterruptible Sleep) 进程正在等待某些条件(通常是 I/O 操作)完成,不能被中断。 停止状态:T (Stopped) 进程已停止,通常是因为接收到 SIGSTOP 或 SIGTSTP 信号。这可能是因为用户手动暂停了进程(如按 Ctrl+Z)。 僵尸状态:Z (Zombie) 进程已终止,但其进程描述符仍保留,等待父进程读取其退出状态。僵尸进程占用很少的系统资源,但大量的僵尸进程可能会导致系统问题。 催眠状态:t (Traced or Stopped) 进程被调试器(如 gdb)追踪,或者已经被停止。 终止状态:X (Dead) 进程已经终止,但这种状态很少见 W (Paging) 进程没有足够的内存资源,这是在旧版 Linux 中的一种状态,在现代系统中不常见 

交互命令

在 top 运行时,你可以输入一些命令来更改视图或执行特定操作:

改变排序列

P:按 CPU 使用率排序。 M:按内存使用率排序。 T:按运行时间排序。 N:按 PID 排序。 

过滤进程

o:添加过滤条件。它会提示你输入过滤条件(如 COMMAND=top)。 =:移除所有过滤条件。 

改变显示内容

f:进入字段管理界面,可以选择显示或隐藏特定字段。 A:自动切换窗口。 W:将当前设置写入配置文件。下次运行 top 时会自动加载这些设置。 

调整刷新时间

d:设置屏幕刷新间隔时间(秒)。 

显示线程

H:切换显示每个进程的线程信息。 

改变显示模式

c:切换显示完整的命令行或仅显示命令名。 1:显示每个 CPU 的使用情况。 i:切换显示闲置和僵尸进程。 

终止进程

k:终止一个进程。它会提示你输入进程ID (PID) 和信号。 

改变进程优先级

r:调整一个进程的优先级(renice)。它会提示你输入进程ID 和新的 nice 值。 

常用top命令行参数

  1. -d
  • 说明:设置屏幕刷新间隔时间(秒)。
  • 使用示例:
top -d 1 

这个命令将 top 的刷新间隔设置为1秒。

  1. -p
  • 说明:只监控指定的进程。
  • 使用示例:
top -p 1 

这个命令只显示 PID 为 1 的进程。

  1. -u
  • 说明:只显示特定用户的进程。
  • 使用示例:
top -u root 

这个命令只显示 username 用户的进程。

  1. -n
  • 说明:更新的次数,达到指定次数后退出。
  • 使用示例:
top -n 5 

这个命令会更新5次后退出。

  1. -b
  • 说明:以批处理模式运行,通常用于脚本和重定向输出。
  • 使用示例:
top -b -n 1 > top_output.txt 

这个命令会以批处理模式运行一次,并将输出重定向到 top_output.txt 文件。

  1. -i
  • 说明:忽略闲置和僵尸进程。
  • 使用示例:
top -i 

这个命令会忽略空闲和僵尸进程的显示。

  1. -H
  • 说明:显示线程信息。
  • 使用示例:
top -H 

这个命令会显示每个进程的线程信息。

  1. -c
  • 说明:切换显示完整的命令行。
  • 使用示例:
top -c 

这个命令会切换显示每个进程的完整命令行。

  1. -o
  • 说明:按指定字段排序。
  • 使用示例:
top -o %CPU 

这个命令会按 CPU 使用率排序进程。

  1. -w [number]
  • 说明:指定输出的宽度。-w 160 强制输出160字符宽,-w 表示自动调整宽度。
  • 使用示例:
top -w 120 

这个命令会将输出宽度设置为120字符。

top组合技:

示例

  • 假设你想要监控特定用户 root 的进程,并且希望输出刷新间隔为 2 秒,同时输出到一个文件中。你可以使用以下命令:
    top -b -n 10 -d 2 -u root > root_processes.txt
  • 这个命令的具体解释如下:
-b:以批处理模式运行。 -n 10:更新10次后退出。 -d 2:每2秒刷新一次。 -u user1:只显示 user1 用户的进程。 > root_processes.txt:将输出重定向到 root_processes.txt 文件 

配置文件

top 命令允许你保存当前配置,这样下次运行 top 时会自动加载这些配置。保存当前配置的方法是按 W 键,这会将配置写入 ~/.toprc 文件

root@xxx:~# cat ~/.toprc top's Config File (Linux processes with windows) Id:i, Mode_altscr=0, Mode_irixps=1, Delay_time=3.0, Curwin=0 Def     fieldscur=&')*+,-./012568<>?ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij         winflags=193844, sortindx=18, maxtasks=0, graph_cpus=0, graph_mems=1         summclr=1, msgsclr=1, headclr=3, taskclr=1 Job     fieldscur=Ļ,-./012568>?ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij         winflags=193844, sortindx=0, maxtasks=0, graph_cpus=0, graph_mems=0         summclr=6, msgsclr=6, headclr=7, taskclr=6 Mem     fieldscur=()*+,-./0125689FGHIJKLOPQRSTUVWXYZ[\]^_`abcdefghij         winflags=193844, sortindx=21, maxtasks=0, graph_cpus=0, graph_mems=0         summclr=5, msgsclr=5, headclr=4, taskclr=5 Usr     fieldscur=+,-./1234568;<=>?@ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij         winflags=193844, sortindx=3, maxtasks=0, graph_cpus=0, graph_mems=0         summclr=3, msgsclr=3, headclr=2, taskclr=3 Fixed_widest=0, Summ_mscale=0, Task_mscale=0, Zero_suppress=0 

相关内容

热门资讯

专业讨论!德扑之星真破解套路(... 专业讨论!德扑之星真破解套路(辅助挂)软件透明挂(有挂了解)-哔哩哔哩;人气非常高,ai更新快且高清...
每日必看!智星德州菠萝外挂检测... 每日必看!智星德州菠萝外挂检测(辅助挂)软件透明挂(有挂教学)-哔哩哔哩1、玩家可以在智星德州菠萝外...
透视透明挂!轰趴十三水有后台(... 轰趴十三水有后台赢率提升策略‌;透视透明挂!轰趴十三水有后台(辅助挂)软件透明挂(有挂详情)-哔哩哔...
发现玩家!德扑ai助手软件(辅... 发现玩家!德扑ai助手软件(辅助挂)透视辅助(有挂教学)-哔哩哔哩;玩家在德扑ai助手软件中需先进行...
一分钟了解!x-poker辅助... 一分钟了解!x-poker辅助软件(辅助挂)辅助透视(有挂攻略)-哔哩哔哩1、每一步都需要思考,不同...
一分钟揭秘!德州最新辅助器(辅... 一分钟揭秘!德州最新辅助器(辅助挂)透视辅助(有挂攻略)-哔哩哔哩;德州最新辅助器最新版本免费下载安...
玩家攻略推荐!德州辅助(辅助挂... 玩家攻略推荐!德州辅助(辅助挂)辅助透视(有挂了解)-哔哩哔哩是由北京得德州辅助黑科技有限公司精心研...
揭秘真相!pokernow德州... 《揭秘真相!pokernow德州(辅助挂)辅助透视(有挂介绍)-哔哩哔哩》 pokernow德州软件...
五分钟了解!德州之星辅助器(辅... 五分钟了解!德州之星辅助器(辅助挂)辅助透视(有挂透明)-哔哩哔哩1、很好的工具软件,可以解锁游戏的...
推荐一款!pokermaste... 1、推荐一款!pokermaster有外挂(辅助挂)透视辅助(有挂教学)-哔哩哔哩;详细教程。2、p...