当前位置: 首页 > news >正文

linux运维一天一个shell命令之 top详解

概念:

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 KiBKiB 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 <delay>
  • 说明:设置屏幕刷新间隔时间(秒)。
  • 使用示例:
top -d 1

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

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

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

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

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

  1. -n <number>
  • 说明:更新的次数,达到指定次数后退出。
  • 使用示例:
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 <field>
  • 说明:按指定字段排序。
  • 使用示例:
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[\]^_`abcdefghijwinflags=193844, sortindx=18, maxtasks=0, graph_cpus=0, graph_mems=1summclr=1, msgsclr=1, headclr=3, taskclr=1
Job     fieldscur=Ļ,-./012568>?ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijwinflags=193844, sortindx=0, maxtasks=0, graph_cpus=0, graph_mems=0summclr=6, msgsclr=6, headclr=7, taskclr=6
Mem     fieldscur=()*+,-./0125689FGHIJKLOPQRSTUVWXYZ[\]^_`abcdefghijwinflags=193844, sortindx=21, maxtasks=0, graph_cpus=0, graph_mems=0summclr=5, msgsclr=5, headclr=4, taskclr=5
Usr     fieldscur=+,-./1234568;<=>?@ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijwinflags=193844, sortindx=3, maxtasks=0, graph_cpus=0, graph_mems=0summclr=3, msgsclr=3, headclr=2, taskclr=3
Fixed_widest=0, Summ_mscale=0, Task_mscale=0, Zero_suppress=0

相关文章:

linux运维一天一个shell命令之 top详解

概念&#xff1a; top 命令是 Unix 和类 Unix 操作系统&#xff08;如 Linux、macOS&#xff09;中一个常用的系统监控工具&#xff0c;它提供了一个动态的实时视图&#xff0c;显示系统的整体性能信息&#xff0c;如 CPU 使用率、内存使用情况、进程列表等。 基本用法 root…...

大模型微调:参数高效微调(PEFT)方法总结

PEFT (Parameter-Efficient Fine-Tuning) 参数高效微调是一种针对大模型微调的技术&#xff0c;旨在减少微调过程中需要调整的参数量&#xff0c;同时保持或提高模型的性能。 以LORA、Adapter Tuning 和 Prompt Tuning 为主的PEFT方法总结如下 LORA 论文题目&#xff1a;LORA:…...

Spark+实例解读

第一部分 Spark入门 学习教程&#xff1a;Spark 教程 | Spark 教程 Spark 集成了许多大数据工具&#xff0c;例如 Spark 可以处理任何 Hadoop 数据源&#xff0c;也能在 Hadoop 集群上执行。大数据业内有个共识认为&#xff0c;Spark 只是Hadoop MapReduce 的扩展&#xff08…...

WPF多语言国际化,中英文切换

通过切换资源文件的形式实现中英文一键切换 在项目中新建Language文件夹&#xff0c;添加资源字典&#xff08;xaml文件&#xff09;&#xff0c;中文英文各一个。 在资源字典中写上想中英文切换的字符串&#xff0c;需要注意&#xff0c;必须指定key值&#xff0c;并且中英文…...

Halcon深度学习分类模型

1.Halcon20之后深度学习支持CPU训练模型&#xff0c;没有money买显卡的小伙伴有福了。但是缺点也很明显&#xff0c;就是训练速度超级慢&#xff0c;推理效果也没有GPU好&#xff0c;不过学习用足够。 2.分类模型是Halcon深度学习最简单的模型&#xff0c;可以用在物品分类&…...

洗地机哪种牌子好?洗地机排行榜前十名公布

洗地机市场上品牌琳琅满目&#xff0c;每个品牌都有其独特的魅力和优势。消费者在选择时&#xff0c;往往会根据自己的实际需求、预算以及对产品性能的期望来做出决策。因此&#xff0c;无论是哪个品牌的洗地机&#xff0c;只要能够满足用户的清洁需求&#xff0c;提供便捷的操…...

C++中的虚函数与多态机制如何工作?

在C中&#xff0c;虚函数和多态机制是实现面向对象编程的重要概念。 虚函数是在基类中声明的函数&#xff0c;可以在派生类中进行重写。当基类的指针或引用指向派生类的对象时&#xff0c;通过调用虚函数可以实现动态绑定&#xff0c;即在运行时确定要调用的函数。 多态是指通…...

《LeetCode热题100》---<哈希三道>

本篇博客讲解 LeetCode热题100道中的哈希篇中的三道题。分别是 1.第一道&#xff1a;两数之和&#xff08;简单&#xff09; 2.第二道&#xff1a;字母异位词分组&#xff08;中等&#xff09; 3.第三道&#xff1a;最长连续序列&#xff08;中等&#xff09; 第一道&#xff1…...

秒懂C++之string类(下)

目录 一.接口说明 1.1 erase 1.2 replace&#xff08;最好别用&#xff09; 1.3 find 1.4 substr 1.5 rfind 1.6 find_first_of 1.7 find_last_of 二.string类的模拟实现 2.1 构造 2.2 无参构造 2.3 析构 2.4.【】运算符 2.5 迭代器 2.6 打印 2.7 reserve扩容 …...

github简单地操作

1.调节字体大小 选择options 选择text 选择select 选择你需要的参数就可以了。 2.配置用户名和邮箱 桌面右键&#xff0c;选择git Bash Here git config --global user.name 用户名 git config --global user.email 邮箱名 3.用git实现代码管理的过程 下载别人的项目 git …...

模型改进-损失函数合集

模版 第一步在哪些地方做出修改&#xff1a; 228行 self.use_wiseiouTrue 230行 self.wiou_loss WiseIouLoss(ltypeMPDIoU, monotonousFalse, inner_iouTrue, focaler_iouFalse) 238行 wiou self.wiou_loss(pred_bboxes[fg_mask], target_bboxes[fg_mask], ret_iouFalse…...

C++模板(初阶)

1.引入 在之前的笔记中有提到&#xff1a;函数重载&#xff08;特别是交换函数&#xff08;Swap&#xff09;的实现&#xff09; void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, double& right) {do…...

下面关于Date类的描述错误的一项是?

下面关于Date类的描述错误的一项是&#xff1f; A. java.util.Date类下有三个子类&#xff1a;java.sql.Date、java.sql.Timestamp、java.sql.Time&#xff1b; B. 利用SimpleDateFormat类可以对java.util.Date类进行格式化显示&#xff1b; C. 直接输出Date类对象就可以取得日…...

【Python面试题收录】Python编程基础练习题①(数据类型+函数+文件操作)

本文所有代码打包在Gitee仓库中https://gitee.com/wx114/Python-Interview-Questions 一、数据类型 第一题&#xff08;str&#xff09; 请编写一个Python程序&#xff0c;完成以下任务&#xff1a; 去除字符串开头和结尾的空格。使用逗号&#xff08;","&#…...

C# Nmodbus,EasyModbusTCP读写操作

Nmodbus读写 两个Button控件分别为 读取和写入 分别使用控件的点击方法 ①引用第三方《NModbus4》2.1.0版本 全局 public SerialPort port new SerialPort("COM2", 9600, Parity.None, 8, (StopBits)1); ModbusSerialMaster master; public Form1() port.Open();…...

spark常用参数调优

目录 1.set spark.grouping.sets.reference.hivetrue;2.set spark.locality.wait.rack0s3.set spark.locality.wait0s;4.set spark.executor.memoryOverhead 2G;5.set spark.sql.shuffle.partitions 1000;6.set spark.shuffle.file.buffer 256k7. set spark.reducer.maxSizeInF…...

C#/WinFrom TCP通信+ 网线插拔检测+客服端异常掉线检测

Winfor Tcp通信(服务端) 今天给大家讲一下C# 关于Tcp 通信部分&#xff0c;这一块的教程网上一大堆&#xff0c;不过关于掉网&#xff0c;异常断开连接的这部分到是到是没有多少说明&#xff0c;有方法 不过基本上最多的两种方式&#xff08;1.设置一个超时时间&#xff0c;2.…...

一篇文章掌握Python爬虫的80%

转载&#xff1a;一篇文章掌握Python爬虫的80% Python爬虫 Python 爬虫技术在数据采集和信息获取中有着广泛的应用。本文将带你掌握Python爬虫的核心知识&#xff0c;帮助你迅速成为一名爬虫高手。以下内容将涵盖爬虫的基本概念、常用库、核心技术和实战案例。 一、Python 爬虫…...

【用户会话信息在异步事件/线程池的传递】

用户会话信息在异步事件/线程池的传递 author:shengfq date:2024-07-29 version:1.0 背景: 同事写的一个代码功能,是在一个主线程中通过如下代码进行异步任务的执行,结果遇到了问题. 1.ThreadPool.execute(Runnable)启动一个子线程执行异步任务 2.applicationContext.publis…...

Java8: BigDecimal

Java8:BigDecimal 转两位小数的百分数-CSDN博客 BigDecimal 先做除法 然后取绝对值 在Java 8中&#xff0c;如果你想要对一个BigDecimal值进行除法操作&#xff0c;并随后取其绝对值&#xff0c;你可以通过组合divide方法和abs方法来实现这一目的。不过&#xff0c;需要注意的…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...