linux 相关基础命令
一. 可以在线练习的网址:
1. https://copy.sh/v86/?profile=linux26
2. https://www.masswerk.at/jsuix/index.html
二. 常用命令
1. top (显示进程信息)
Top 命令可以定期显示所有正在运行和实际运行的进程,并且更新到列表中
第一行:当前时间、系统已运行时间、当前登录用户的数量、最近5、10、15分钟内的平均负载
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行:任务的总数、运行中(running)的任务、休眠(sleeping)中的任务、停止(stopped)的任务、僵尸状态(zombie)的任务
第三行:us- user:运行(未调整优先级的) 用户进程的CPU时间、sy- system:运行内核进程的CPU时间、ni- niced:运行已调整优先级的用户进程的CPU时间、id- idle:空闲时间,CPU 消耗在闲置进程的时间百分比,这个值越低,表示 CPU 越忙、wa- IO wait: CPU 等待外部 I
/O
的时间百分比,这段时间 CPU 不能干其他事,但是也没有执行运算,这个值太高就说明外部设备有问题
、hi-处理硬件中断的CPU时间、si- 处理软件中断的CPU时间
(User space 只能执行简单的运算,不能直接调用系统资源。 0.1%us就是CPU消耗在user space的时间百分比。
Kernel space 可以执行任意命令,调用系统的一切资源。0.2%sy是消耗在kernel space的时间百分比)
第四行:全部可用内存、已使用内存、空闲内存、缓冲内存
内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
若要计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached
第五行:全部、已使用、空闲和缓冲交换空间
(对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了)
第七行开始为各进程任务的状态监控
PID- 进程ID,进程的唯一标识符;
USER- 进程所有者的实际用户名;
PR- 进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态;
NI- 进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级;
VIRT- virtual memory usage 虚拟内存,进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES 注: 按申请量展示
RES- resident memory usage 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA (CODE 可执行代码占用的物理内存大小,DATA 数据占用的物理内存大小)注:按实际使用量展示, 另: 如果top没有显示,按 f 键,通过敲击“r”和“s”键,显示“CODE”和“DATA”两个字段。
SHR- shared memory 共享内存,计算某个进程所占的物理内存大小公式:RES – SHR;
S- 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程;
%CPU- 上次更新到现在的CPU时间占用百分比,%CPU显示的是进程占用一个核的百分比,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100;
%MEM- 进程使用的物理内存百分比;
TIME+ - 进程使用的CPU时间总计,单位1/100秒;
COMMAND- 进程名称(命令名/命令行)
top下的其他操作:
在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况;
f:进入字段显示配置模式; M:根据驻留内存大小进行排序; P:根据CPU使用百分比大小进行排序;
top命令的监控最小单位是进程,所以看不到java线程数和客户连接数,而这两个指标是java的web服务非常重要的指标,通常我用ps和netstate两个命令来补充top的不足:
监控java线程数:ps -eLf | grep java | wc -l
监控网络客户连接数:netstat -n | grep tcp | grep 侦听端口 | wc -l
https://www.cnblogs.com/fuqu/p/10230385.html
https://www.cnblogs.com/shanghai1918/articles/12843164.html
2.vmstat
vmstat命令:展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况等。
相比top,可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
vmstat 1 10
说明:1代表每一秒进行一次采样,10代表采样10次
各字段说明:
类别 | 项目 | 含义 | 说明 |
Procs(进程) | r | 等待执行的任务数 | 当这个值超过了cpu个数,就会出现cpu瓶颈。 |
b | 等待IO的进程数量 | ||
Memory(内存) | swpd | 正在使用虚拟的内存大小,单位k | |
free | 空闲内存大小 | ||
buff | 用作缓冲的内存大小 | ||
cache | 用作缓存的内存大小 | 如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小 | |
inact | 非活跃内存大小,即被标明可回收的内存,区别于free和active | 当使用-a选项时显示 | |
active | 活跃的内存大小 | 当使用-a选项时显示 | |
Swap(虚拟内存) | si | 每秒从交换区写到内存的大小,由磁盘调入内存 |
(单位:kb/s) 如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。 即使free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。 |
so | 每秒写入交换区的内存大小,由内存调入磁盘 | ||
IO(现在的Linux版本块的大小为1024bytes) | bi | 每秒读取的块数(读磁盘) |
块设备每秒接收的块数量,单位是block。 磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。 |
bo | 每秒写入的块数(写磁盘) | ||
System(系统) | in | 每秒中断数,包括时钟中断 |
这两个值越大,会看到由内核消耗的cpu时间会越大。 例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目。 |
cs | 每秒上下文切换数 | ||
CPU(以百分比表示) | us | 用户进程执行时间百分比(user time) | us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。 |
sy | 内核系统进程执行时间百分比(system time) |
sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。 这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足 |
|
id | 空闲时间百分比 | 一般来说 us+sy+id=100 | |
wa | 等待IO时间 | wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。 |
性能分析:
http://www.ha97.com/4512.html
https://blog.csdn.net/m0_38110132/article/details/84190319
3.mpstat
能查看CPU相关统计信息,可以查看所有CPU,也可以查看指定CPU的信息。 与sar相比,mpstat对CPU能实时状态进行监控。
vmstat和mpstat 命令的差别:
mpstat 可以显示每个处理器的统计,而 vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。当您看到较低的 %idle 数字时,您知道出现了 CPU 不足的问题。当您看到较高的 %iowait 数字时,您知道在当前负载下 I/O 子系统出现了某些问题。(原文链接:https://blog.csdn.net/quiet_girl/article/details/50697412)
mpstat -P ALL 5 3
说明:对所有的CPU 每5秒产生一个报告,总共产生3个。
4.sar
sar(System Activity Reporter, 系统活动情况报告): 是用于监控Linux系统各个性能的优秀工具,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
与mpstat相比,sar能查看CPU历史信息
sar -P ALL 5 10
说明:指对每个CPU输出信息进行统计,每5秒统计一次,共10次。
sar -u 1 10 -o sar.out
说明:将cpu信息每1秒统计一次,共10次,存储到sar.out文档中。
sar -f sar.out
说明:查看sar文件
5.iostat — 输入/输出统计
iostat 是收集和展示系统输入和输出存储设备统计的简单工具。这个工具通常用于查找存储设备性能问题,包括设备、本地磁盘、例如 NFS 远程磁盘
三. 学习网址:
http://www.92csz.com/study/linux/
https://blog.csdn.net/sz85850597/article/details/108295125
https://mp.weixin.qq.com/s?__biz=MzA3OTQzMjc3NA%3D%3D&mid=2650567960&idx=1&sn=b0e41dbbe85a95e12404e6476f0d5cec&scene=45#wechat_redirect
排查占cpu的oracle中sql语句的经验文章:https://www.bbsmax.com/A/o75NXOQDzW/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?