Linux命令及CPU占用过高的定位分析思路

news/2024/4/26 1:40:04/文章来源:https://blog.csdn.net/inexaustible/article/details/129185272

一、vim命令

不要使用vim打开大文件,vim会一次性读取所有内容到内存,容易造成宿主机内存溢出。 打开文件前,可以使用du -h命令查看文件大小。一般,100MB以下为宜。

1、普通模式

j 向下
30j 向下移动30行
k 向上
h 向左
l 向右
0 到行首
^ 到行首第一个字符,如果前面有空格的话
$ 到行尾
gg 快速到文件头
G 快速到文件尾
100G 跳转到第100行

2、命令模式

在普通模式下,输入:即可进入。

在命令模式下输入:

:set nu 显示行号
:set nonu 不显示行号

3、查找字符串

在普通模式下,按下/直接进入查找,输入相应的字符串按确定即可。

n 查找下一个匹配
N 查找上一个匹配
2n 查找下面第二个匹配

二、firewall-cmd命令

1、开放端口

firewall-cmd --zone=public --add-port=8888/tcp --permanent   # 开放8888端口,永久增加:reload后生效  
firewall-cmd --zone=public --remove-port=8888/tcp --permanent  #关闭8888端口  
firewall-cmd --reload   # 更新防火墙规则,配置立即生效

查看防火墙:

firewall-cmd --list-all

2、查看防火墙所有开放的端口

firewall-cmd --zone=public --list-ports

3、关闭防火墙

如果不想管控端口,直接关闭系统防火墙,啥都能通,但安全性不强,不建议。

systemctl stop firewalld.servic

4、查看防火墙状态

firewall-cmd --state

5、查看监听的端口

netstat -lnpt

PS:centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools

6、检查端口被哪个进程占用

netstat -lnpt |grep 8888

7、查看进程的详细信息

ps 8888

8、中止进程

# kill -9 [进程号] ,例如
kill -9 6832

三、rm 命令

删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

命令格式:rm [选项] 文件

常用参数

  • -f, --force 忽略不存在的文件,从不给出提示。

  • -i, --interactive 进行交互式删除

  • -r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。

  • -v, --verbose 详细显示进行的步骤

  • --help 显示此帮助信息并退出

  • --version 输出版本信息并退出

使用实例

1.删除文件 test.txt,系统会提示是否删除。

rm test.txt

2.强制删除 test.txt,系统不再提示。

rm -f test.txt

3.将 test 子目录及目录中所有档案删除。

rm -r test

四、top分析性能(整机)

常用的分析性能的工具,能够实时监控系统中各个进程资源占用的情况,这和windows中任务管理器有点类似。

系统时间:17:15:47

运行时间:118 days, 22 min,

当前登录用户: 4 users,

负载均衡(uptime):load average: 0.09, 0.10, 0.03

average后面的三个数分别是1分钟、5分钟、15分钟的负载情况,load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

按1键:

按进程的CPU使用率排序:运行top命令后,按键大写P

按进程的内存使用率排序:运行top命令后,键入大写M

uptime系统性能命令的精简版

五、cpu查看vmstat(CPU)

vmstat -n 2 3

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数单位是秒,第二个参数是采样的次数

  • procs
  • r:运行和等待CPU时间片的进程数,原则上1核的CPU的运行队列 不要超过2,整个系统的运行队列不能超过总核数的2倍,否则代表系统压力过大。

  • b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等。

  • cpu
  • us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序。

  • sy:内核进程消耗CPU时间百分比。

  • us+sy参考值为80%,如果us+sy大于80%,说明可能存在CPU不足。

id:处于空闲的CPU百分比。

wa:系统等待IO的CPU时间百分比。

st:来自于一共虚拟机偷取的CPU时间百分比。

mpstat -P ALL 2

mpstat [-P {|ALL}] [internal [count]]
参数 解释
-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用,当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。

mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况

六、cpu查看pidstat

pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]

常用的参数:

-u:默认的参数,显示各个进程的cpu使用统计

-r:显示各个进程的内存使用统计

-d:显示各个进程的IO使用情况

-p:指定进程号

-w:显示每个进程的上下文切换情况

-t:显示选择任务的线程的统计信息外的额外信息

-T { TASK | CHILD | ALL }

这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。

注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。

-V:版本号

-h:在一行上显示了所有活动,这样其他程序可以容易解析。

-I:在SMP环境,表示任务的CPU使用率/内核数量

-l:显示命令名和所有参数

pidstat -u 1 -p 2656416 // 2656416进程每一秒打印一次打印出详细情况

七、内存查看free(内存)和pidstat

free [-b-k-m] [-o] [-s delay] [-t] [-V]

free命令用来显示内存的使用情况,使用权限是所有用户。

  • 经验值

  • 应用程序可用内存/系统物理内存>70%内存充足

  • 应用程序可用内存/系统物理内存<20%内存不足,需要增加内存

  • 20%<应用程序可用内存/系统物理内存<70%内存基本够用

pidstat -p 进程号 -r 采样间隔秒数查看内存使用情况

pidstat -p 2656416 -r 2

八、df 列出文件系统的整体磁盘使用量

df命令是用来查看linux系统服务器文件系统的磁盘使用情况。可以用该命令来查看已经使用了多少空间,还有多少空间可用。

选项可以有:

-a:全部文件系统列表,包含虚拟文件系统

-B:指定显示scale size,比如以M,G为单位显示

-h:方便人阅读方式显示

-H:和-h相似,不过其中1k = 1000byte, 1M=1000k

-i:列出inode的信息

-k :区块为1024字节

-l :显示本地文件系统

-p:使用POSIX规范输出

-t:打印指定的文件系统类型

-T:显示文件系统类型

-x:不打印指定的文件系统类型

九、磁盘IO查看iostat和pidstat

iostat 是 I/O statistics(输入/输出统计)的缩写。

iostat 命令主要用于对系统的磁盘操作活动进行监视,包括 读写次数与读写的数据量I/O 请求的服务时间与等待时间 等。同时,iostat 命令还可用于 考察 CPU 的利用率考察 NFS 网络文件系统的处理活动 等。

iostat [参数] [时间] [次数]

命令参数

参数

解释

-c

显示 CPU 使用情况的分类统计数据。

-d

显示设备使用情况的分类统计数据。

-h

按照易读的适当单位显示 -n 选项提供的 NFS 统计数据。

-k

以 KB/s(而非默认的每秒数据块)为单位显示统计数据。

-m

以 MB/s 为单位显示统计数据。

-n

显示 NFS 统计数据。

-N

用于显示 LVM2 逻辑卷的统计数据。

`-p[devices

ALL]`

显示指定块设备及其所有分区的统计数据。如果在命令行中指定了设备名,显示指定设备及其所有分区的统计数据。关键字 ALL 表示显示所有块设备及其所有分区(包括未用分区)的统计数据。

-t

在显示的统计数据中增加时间信息(时间的显示格式依赖于 S_TIME_FORMAT 环境变量的设置)。

-V

显示命令的版本与版权信息,然后退出。

-x

显示附加的统计信息。

-z

禁止输出数据采样期间没有 I/O 活动的任何设备。

iostat -xdk 2 3

pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

pidstat [ 选项 ][<时间间隔>][<次数>]

常用的参数:

-u:默认的参数,显示各个进程的cpu使用统计

-r:显示各个进程的内存使用统计

-d:显示各个进程的IO使用情况

-p:指定进程号

-w:显示每个进程的上下文切换情况

-t:显示选择任务的线程的统计信息外的额外信息

-T{TASK|CHILD|ALL}

这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。

注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。

-V:版本号

-h:在一行上显示了所有活动,这样其他程序可以容易解析。

-I:在SMP环境,表示任务的CPU使用率/内核数量

-l:显示命令名和所有参数

pidstat -d 采样间隔秒数 -p 进程号

pidstat -d 2 -p 2656416

十、ifstat(网络IO)

ifstat 命令用于统计网络接口流量状态,能比较简单看网络流量。ifstat 可以整齐地打印出网络接口统计信息,还可以用来禁用指定的网络接口。

语法格式

ifstat [OPTIONS]

选项说明

-a #监测能检测到的所有网络接口的状态信息

-z #隐藏流量是无的接口

-h #显示帮助信息

-j #用JSON格式输出信息

-n #关闭显示周期性出现的头部信息

-t #在每一行的开头加一个时间戳

-T #报告所有监测接口的全部带宽

-w #用指定的列宽

-W #如果内容比终端窗口的宽度还要宽就自动换行

-S #在同一行保持状态更新(不滚动不换行)

-q #安静模式

-v #显示版本信息

-d #指定一个驱动来收集状态信息

十一、CPU占用过高的定位分析思路

结合Linux和JDK命令一块分析。

案例步骤:

1、先用top命令找出CPU占比最高的

2、ps -ef或者jsp进一步定位,得知是怎么样的一个后台程序

jps -l 或者ps -ef | grep java | grep -v grep

jps(Java Virtual Machine Process Status Tool)是JDK提供的一个显示当前所有java进程pid的命令,简单实用。
命令格式:jps [options ] [ hostid ]
[options]选项 :
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method
-m:输出main method的参数
-l:输出完全的包名,应用主类名,jar的完全路径名
-v:输出jvm参数
-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
-Joption:传递参数到vm,例如:-J-Xms512m
grep -v grep在文档中过滤掉包含有grep字符的行 ,避免影响最终数据的正确性

3、定位到具体线程或者代码

ps -mp 进程ID -o THREAD,tid,time

-m 显示所有的线程
-p pid进程使用cpu的时间
-o 该参数后是用户自定义的格式

ps -mp 2656416 -o THREAD,tid,time

4、将需要的线程ID转换为16进制格式(英文小写)

printf "%x\n" 线程ID

5、jstack 线程ID | grep tid(16进制线ID英文小写) -A60

jstack 2656417 | grep 2888a1 -A60

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73557.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分阶段构建golang运行环境Dockerfile镜像

在开始这项工作之前大家可以先去看一下docker官方给出关于空镜像scratch的说明&#xff0c;采用官方简单的一句话就是&#xff1a;scratch是一个明确的空图像&#xff0c;特别是对于“从头开始”构建图像。分阶段构建镜像就会用到scratch这个空镜像&#xff0c;这样的好处是可以…

Vulnhub靶场----7、DC-7

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-7下载地址&#xff1a;https://download.vulnhub.com/dc/DC-7.zip kali&#xff1a;192.168.144.148 DC-7&#xff1a;192.168.144.155 二、渗透流程 nmap -T5 -A -p- -sV -sT 192.168.144.155思路&#xff1a; …

【Rust 日报】2023-2-23 Ambient 0.1 发布

治理改革 RFC公告官方博客发布了治理改革RFC的公告&#xff0c;了解详情请点开链接查看。主要看点其实是新的RFC改革治理之后&#xff0c;提供了多语言的支持&#xff0c;其中包括简体中文&#xff0c;该PR目前还在讨论中。原文: https://blog.rust-lang.org/inside-rust/2023/…

RabbitMQ 实现延迟队列

业务场景&#xff1a;1.生成订单30分钟未支付&#xff0c;则自动取消&#xff0c;我们该怎么实现呢&#xff1f;2.生成订单60秒后,给用户发短信1 安装rabbitMqwindows安装ubuntu中安装2 添加maven依赖<!-- https://mvnrepository.com/artifact/org.springframework.boot/spr…

「JVM 编译优化」Graal 编译器

文章目录1. 历史背景2. 构建编译调试环境3. JVMCI 编译器接口4. 代码中间表示5. 代码优化与生成1. 历史背景 Graal 编译器在 JDK 9 以 Jaotc 提前编译工具的形式首次加入到官方的 JDK 中&#xff0c;JDK 10 开始提供替换&#xff08;得益于 HotSpot 编译器接口&#xff0c;Jav…

扬帆优配|“涨停敢死队”慌了?监管“盯紧”异常交易

日前&#xff0c;沪深买卖所发布《主板股票反常买卖实时监控细则》&#xff0c;对反常买卖行为的类型和标准作出规则。其间&#xff0c;针对“打板”“封板”等反常行为的监控遭到商场重视&#xff0c;有商场传闻称&#xff0c;新规或导致高频买卖毁灭&#xff0c;“量价型股票…

MySQL进阶知识

1 存储引擎1.1 MySQL体系结构1.2 存储引擎简介存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的&#xff0c;而不是基于库的&#xff0c;同一个库的多个表可以采用不同的存储引擎&#xff0c;所以存储引擎也经常称为表类型。创建表时可以指…

pyhon笔记——Anaconda安装

一、简介 Anaconda包括Conda、Python以及一大堆安装好的工具包&#xff0c;比如&#xff1a;numpy、pandas等 Miniconda包括Conda、Python conda是一个开源的包、环境管理器&#xff0c;可以用于在同一个机器上安装不同版本的软件包及其依赖&#xff0c;并能够在不同的环境之…

Android:实现签名功能——signature-pad库

文章目录实现效果步骤1、添加 signature-pad 库的依赖。2、在 layout 文件中使用 SignaturePad 控件&#xff0c;另外添加“清空”和“保存”两个按钮。3、实现清空 SignaturePad 控件内容的功能4、实现保存 SignaturePad 控件内容的功能5、实现兼容Android10以下和Android10以…

Video 标签无法播放 mp4 的原因和解决办法

问题 用 QQ 的截图录屏功能录制的 mp4 视频&#xff0c;无法用 <video> 标签正常播放。 原因 通过搜索的说法是&#xff1a; 查阅文档&#xff08;不知道是啥文档&#xff09;&#xff0c;关于video标签所支持的视频格式和编码&#xff1a; MPEG4 带有H.264视频编码和…

大规模食品图像识别:T-PAMI 2023论文解读

美团基础研发平台视觉智能部与中科院计算所展开科研课题合作&#xff0c;共同构建大规模数据集Food2K&#xff0c;并提出渐进式区域增强网络用于食品图像识别&#xff0c;相关研究成果已发表于T-PAMI 2023。本文主要介绍了数据集特点、方法设计、性能对比&#xff0c;以及基于该…

【STM32MP157应用编程】2.GPIO输入、输出、中断

目录 GPIO文件 指令操作GPIO 程序操作GPIO 程序说明 程序代码 2_GPIO_4.c 启动交叉编译工具 编译 拷贝到开发板 测试 GPIO文件 在/sys/class/gpio目录下&#xff0c;存放了GPIO的文件。 gpiochipX&#xff1a;当前SoC所包含的GPIO控制器&#xff0c;STM32MP157一共包…

input 子系统

简介 先来了解什么是输入设备&#xff1f; 常见的输入设备有键盘、 鼠标、 遥控杆、 书写板、 触摸屏等等,用户通过这些输入设备与 Linux 系统进行数据交换。 什么是输入系统&#xff1f; 输入设备种类繁多&#xff0c; 能否统一它们的接口&#xff1f; 既在驱动层面统一&…

x64dbg和IDA pro 配置PDB 符号文件symbols

PDB 作用 PDB&#xff08;Program Debugging Database&#xff09;就是在生成EXE 和 DLL 文件的过程中生成的这个文件&#xff0c;可以帮助进行调试。 为什么x64dbg 没有将PDB 文件集成到软件中呢&#xff1f;主要是PDB 文件太大了&#xff0c;在分发安装包的时候会很大&#…

数据库浅谈之 DuckDB AGG 底层实现

数据库浅谈之 DuckDB AGG 底层实现 HELLO&#xff0c;各位博友好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 这里是数据库浅谈系列&#xff0c;收录在专栏 DATABASE 中 &#x1f61c;&#x1f61c;&#x1f61c; 本系列阿呆将记录一些数据库领域相关的知…

小米/红米手机数据恢复:从小米手机恢复已删除的数据

如果您不小心删除了小米手机上的数据&#xff0c;后来发现您需要它&#xff0c;那么本文适合您。我将向您介绍一些最可靠的小米恢复方法&#xff0c;以将您的数据恢复到您的设备上。无论您是否有备份&#xff0c;都可以处理。让我们开始吧&#xff01; 小米数据恢复 - 如何做&a…

我们应该如何优雅的处理 React 中受控与非受控

引言 大家好&#xff0c;我是19组清风。有段时间没有和大家见面了&#xff0c;最近因为有一些比较重要的事情&#xff08;陪女朋友和换了新公司&#xff09;在忙碌所以销声匿迹了一小段时间&#xff0c; 后续会陆陆续续补充之前构建 & 编译系列中缺失的部分&#xff0c;提…

【异构图笔记,篇章1】RGCN:Modeling Relational Data with Graph Convolutional Networks

【异构图笔记&#xff0c;篇章1】RGCN:Modeling Relational Data with Graph Convolutional Networks论文信息论文要点快览论文内容介绍背景任务RGCN Conv的介绍RGCN的trick论文实验结果实体分类链路预测评价及总结本文仅供学习&#xff0c;未经同意请勿转载 后期会陆续公开关于…

会声会影2023官方新功能介绍

深入简单直观的视频编辑&#xff01;使用 Corel VideoStudio会声会影2023&#xff0c;将您最美好的时刻和生活体验变成令人惊叹的电影&#xff0c;这是一款有趣且直观的视频编辑器&#xff0c;包含高级工具和高级效果。从自定义标题和过渡&#xff0c;到 Mask Creator、Color G…

MySQL锁篇

文章目录说明&#xff1a;锁篇一、MySQL有那些锁&#xff1f;二、MySQL 是怎么加锁的&#xff1f;三、update 没加索引会锁全表&#xff1f;四、MySQL 记录锁间隙锁可以防止删除操作而导致的幻读吗&#xff1f;五、MySQL 死锁了&#xff0c;怎么办&#xff1f;六、字节面试&…