Linux查看系统运行情况

简介: 通过查看内存、cpu以及硬盘的状态可帮助我们分析问题,并优化应用程序

磁盘使用情况

#查看硬盘使用情况
df -h


上图各标题释义:

● Filesystem 文件系统,显示当前机器安装的所有硬盘和硬盘的分区情况

● Size 容量,磁盘空间容量

● Used 已用,

● Avail  可用

● Use%  已用百分比

● Mounted on 挂载点,磁盘挂载的目录位置

其中 /dev/vda1 代表就是我们的硬盘使用情况,这里简单说下:

/dev 下的 vd{x}{y} (其中 x从a-z,y 为数字) x位代表的是硬盘,y位代表的是分区,比如:vda 代表硬盘1,vdb 代表硬盘2;vda1 代表硬盘1的分区1,vda2 代表硬盘1的分区2。

若发现硬盘使用率过高,可通过以下命令查看:

#进入到根目录逐层分析或者进入到你认为可能造成占用过大的文件夹
cd /
#查看每个文件夹及文件使用情况
du -sh *
#仅查看文件夹的使用情况
du --max-depth=1 -h



要是单纯查看磁盘大小,也可使用以下命令:

fdisk -l


内存使用情况

#数字单位 kb
free
#数字单位 G
free -g
#数字单位 M
free -m
#带有单位展示
free -h


纵向释义:

  • Mem 物理内存使用情况
  • Swap 交换分区情况

横向释义:

  • total 可供系统使用的内存大小,物理内存减去预留位和内核使用内存
  • used 已经使用的内存数,包含 buffer 和 cache,但其中部分缓存并未实际使用
  • free 空闲未被分配的内存(真正尚未被使用的物理内存)
  • shared 多个进程共享的内存
  • buff/cache buffers和cache 所用的内存总量
  • buffer 内存和磁盘之间产生的用于缓存即将写入磁盘的数据。根据磁盘的读写设计,把分散的写操作集中进行,以减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。Linux中有个守护进程会定期清理缓冲内容。
  • cache 用于将从磁盘读取的数据缓存起来,当重新读取时若命中缓存则可从内存中快速获取,而无需从磁盘读取。缓存数据会根据读取的频率进行组织,将频繁读取的放在容易找到的位置,频率低或者不再读取的数据不断向后排,直至删除。Cache 是CPU和内存之间为了解决速度不对等问题产生的,当CPU调用大量数据时,就可避开内存直接从Cache中调用,从而加快读取速度。
  • available 应用程序认为的实际可用的最大空间,大致的计算方式为:available = free + buff/cache
  • buffer 和 cache 虽然存在分配未使用,但对内核来说都属于已经被使用的内存。当应用程序申请内存时,若 free 内存不够,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。因此从应用程序的角度来说,available = free + buff/cache。


我们根据 free 查询的结果,结合ECS的监控图:

内存使用率=(total-available)/total

因此上述内存使用率 = (7822712-6817660)/7822712 = 12.85%

CPU使用情况

1、概念

简单介绍下 CPU 使用率,指的是单位时间内 CPU 使用情况的统计。这样说可能有些抽象,举个例子,一天24小时,一个外卖员用了6个小时去接单送货,那么他的使用率为:6/24 = 25%。同理,我们衡量 CPU 的使用率就是 CPU占用的时间(非空闲的时间)/ 总 CPU 时间 得到的百分比,粗略的概括为以下公式:

CPU使用率 = 1-空闲时间/总CPU时间

Linux 会将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。

通常大部分性能工具在计算CPU使用率时会取间隔一段时间的两次值做差值计算后,来计算这段时间的平均 CPU 使用率,公示如下:

2、性能

那么如何理解性能呢?比如有两个外卖员,两人接送单的总时间还是 6 小时,使用率仍然是 25%。但A是在接外卖单的空余时间还顺带接了一个跑腿,那么可以看出 A 的整体性能比 B 好。回到系统设计上,我们应该尽量避免任务长时间占用CPU的任务设计,拆分长任务,防止出现卡顿。

3、查看

1)使用 top 命令查看:

top 默认显示的是所有 CPU 的平均值。如果你的机器是多核的,按下数字 1 ,就可以切换到展示每个 CPU 的使用率,再此按下 1 即可折叠收起。

各字段释义:

  • us(user 缩写)代表用户态进程占用 CPU 时间占比。注意,它不包括下面的 nice 时间,但包括了 guest 时间。
  • sy(system 缩写)代表内核占用CPU时间占比
  • ni(nice 缩写)代表低优先级用户态进程 CPU 时间占比。这些进程的优先级会被调整,也就是进程的 nice 值被调整为 1-19 之间时的 CPU 时间。其中,nice 可取值范围是 -20 到 19,数值越大,优先级反而越低。
  • id(idle 缩写)代表空闲CPU时间占比,这个时间不包括等待 I/O 的时间(iowait)
  • wa(iowait 缩写)代表等待 I/O 的 CPU 时间占比
  • hi(IRQ 缩写)代表硬中断(Hardware)的 CPU 时间占比
  • si(softirq 缩写)代表处理软中断的 CPU 时间占比
  • st(steal 缩写)代表当系统运行在虚拟机中的时候,被其他虚拟机占用的 CPU 时间占比

补充:

  • guest 代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的 CPU 时间
  • gnice(guest_nice 缩写)代表以低优先级运行虚拟机的时间

基于我们之前介绍的概念,top 工具默认使用的是 3 秒间隔的差值计算的 CPU 使用率。

2)/proc/stat

/proc/stat 中包含系统启动以来的系统和内核的统计信息,通过它我们可以查看 CPU 的汇总时间。它的单位是 USER_HZ,也就是 10 ms(1/100 秒)。

cat /proc/stat |grep cpu


横向:

  • cpu 所有的cpu累加数据
  • cup{x} x为数字,代表不同cpu的数据

纵向(第二列开始)数字分别为:

  • user、nice、system、idle、iowait、irq、softirq、steal、guest、guest_nice

每列的字段释义可参考上面的介绍,CPU 总时间计算公式如下:

CPU总时间= user + nice + system + idle + iowait + irq + softirq

我们可以通过上述的数据通过第一个公式计算出开机以来的 CPU 平均使用率,但这个使用率通常并没有什么意义,实际上我们会更关注一段时间内的CPU使用率。

3)ps命令

查看哪些进程占用了CPU:

ps aux | sort -nrk 3,3 | head -n 5


红框内的数字就代表了这个进程的 CPU 使用率。

我们也可以通过进程名查看CPU的使用率:

ps -C {进程名} -o %cpu
#对应上图 28276 这个进程命令如下
ps -C AliYunDunMonitor -o %cpu


此时我们使用 top 查看这两个进程的 CPU 使用情况:

top -p 28276,14429


对比 ps 命令查看的结果,两者并不一样,因为 top 是使用的 3秒时间间隔计算的结果,而 ps 使用的是进程整个生命周期计算的结果。


相关文章
|
3月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
304 3
Linux系统禁用swap
|
3月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
483 3
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
422 0
Linux系统初始化脚本
|
4月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
297 18
|
3月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
348 1
|
3月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1066 1
|
4月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
1665 10
|
4月前
|
安全 Linux 数据安全/隐私保护
为Linux系统的普通账户授予sudo访问权限的过程
完成上述步骤后,你提升的用户就能够使用 `sudo`命令来执行管理员级别的操作,而无需切换到root用户。这是一种更加安全和便捷的权限管理方式,因为它能够留下完整的权限使用记录,并以最小权限的方式工作。需要注意的是,随意授予sudo权限可能会使系统暴露在风险之中,尤其是在用户不了解其所执行命令可能带来的后果的情况下。所以在配置sudo权限时,必须谨慎行事。
683 0
|
4月前
|
Ubuntu Linux 开发者
国产 Linux 发行版再添新成员,CutefishOS 系统简单体验
当然,系统生态构建过程并不简单,不过为了帮助国产操作系统优化生态圈,部分企业也开始用国产操作系统替代 Windows,我们相信肯定会有越来越多的精品软件登录 Linux 平台。
373 0
|
4月前
|
Ubuntu 安全 Linux
Linux系统入门指南:从零开始学习Linux
Shell脚本是一种强大的自动化工具,可以帮助您简化重复的任务或创建复杂的脚本程序。了解Shell脚本的基本语法和常用命令,以及编写和运行Shell脚本的步骤,将使您更高效地处理日常任务。
616 0