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

Linux进阶命令-top

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

经过上一章Linux日志的讲解,我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令,主要从以下几个方面来讲解:一些系统操作,系统查看处理,Linux文本处理,逻辑判断,重定向,网络传输,服务启动,文件句柄等内容。通过这些操作,让你对Linux的操作更加得心应手,具体分成以下章节进行讲解:

Linux进阶命令-echo&date&alias

Linux进阶命令-top(本章节)

Linux进阶命令-ps&kill

Linux进阶命令-sort&wc

Linux进阶命令-sed&split

Linux进阶命令-awk&uniq

Linux进阶命令-逻辑或&逻辑与

Linux进阶命令-重定向

Linux进阶命令-scp

Linux进阶命令-rsync

Linux进阶命令-rsync-daemon

Linux进阶命令-nohup&screen

Linux进阶命令-lsof

Linux进阶命令-小结

top

我们前面已经讲了很多服务,也讲了很多命令,但是我们的Linux服务器运行得怎么样,有什么命令可以知道整个服务器的运行情况呢?

top 命令是一个功能强大的实时进程监视器,在Linux和Unix系统中广泛用于监控系统的运行情况和进程活动。它以交互式的方式显示系统当前的进程列表,并实时更新各个进程的相关指标,如CPU使用率、内存使用率等。以下是关于 top 命令的详细解释:

第一行:全局信息

top - 11:34:50 up 3 days, 18:49,  2 users,  load average: 0.04, 0.05, 0.01
  • 11:34:50:当前时间。

  • up 3 days, 18:49:系统运行时间,从上次开机时间

  • 2 users:当前登录用户数,Linux的多用户可以在这里体现。

  • load average: 0.04, 0.05, 0.01:系统负载,分别代表1分钟、5分钟、15分钟的平均负载。非常重要的指标,这里有一个简单的计算方式:cpu如果有多少核,这里的负载就应该略低于这个cpu的核数量,才算是正常的。

常见的异常就是laod负载很高。

第二行:进程概述

Tasks: 210 total,   1 running, 209 sleeping,   0 stopped,   0 zombieTasks: 210 total,   1 running, 209 sleeping,   0 stopped,   0 zombie
  • 210 total:总进程数。

  • 1 running:正在运行的进程数,这个指标和上面的load有相似的计算方法,偶尔的波动不算,持续高才算异常。

  • 209 sleeping:休眠中的进程数。

  • 0 stopped:停止的进程数。

  • 0 zombie:僵尸进程数,这个后面会单独来讲。

常见的异常就是大量的running进程和僵尸进程。

第三行:cpu概述

%Cpu(s):  2.3 us,  0.2 sy,  0.0 ni, 97.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • us(User Time):表示用户空间占用 CPU 的时间占比为 2.3%。一般而言就是业务使用。

  • sy(System Time):系统空间占用 CPU 的时间占比为 0.2%。一般而言就是系统使用,正常这个值都应该很低才低。

  • ni(Nice Time):优先级调整过的进程的用户态占用 CPU 时间比例为 0.0%。

  • id(Idle Time):CPU 空闲时间占比为 97.5%,说明大部分时间 CPU 没有进行实质性工作,处于等待任务分配的状态。

  • wa(Waiting for I/O to Complete):CPU 等待 I/O 操作完成的时间占比为 0.0%,这个指标也应该比较低才是正常的。

  • hi(Hardware Interrupt Time):处理硬件中断占用的 CPU 时间比例为 0.0%。

  • si(Software Interrupt Time):处理软件中断占用的 CPU 时间比例为 0.0%。

  • st(Steal Time,虚拟化环境下):在虚拟化场景中,被其他虚拟机占用的 CPU 时间比例为 0.0%。

常见从异常就是sy很高,wa很高。

第四/五行:内存概述:

KiB Mem :  1798728 total,    83520 free,   179256 used,  1535952 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1431816 avail Mem 
  • KiB Mem:

    • total(总内存):系统总的物理内存为 1798728 KiB。

    • free(空闲内存):当前未被使用的内存有 83520 KiB。

    • used(已使用内存):已经被分配给各种进程和系统内核等的内存为 179256 KiB。Linux的特殊性就是随着他的使用时间增加,他会无限接近于总内存,这个是正常的。除了应用程序使用外,其他都给了buff和cache来提高Linux的速度。

    • buff/cache(缓冲区和缓存):用于磁盘缓存和各种缓冲区的内存为 1535952 KiB,这些内存可以在需要时快速释放给其他应用程序使用。

  • KiB Swap:

    • total(总交换空间):交换空间总量为 0 KiB,交换空间通常用于当物理内存不足时,将部分内存数据暂存到磁盘的特定区域。

    • free(空闲交换空间):当前未使用的交换空间为 0 KiB。

    • used(已使用交换空间):已使用的交换空间为 0 KiB,说明目前没有进行内存与交换空间之间的数据交换操作。

  • avail Mem(可用内存):当前系统可供应用程序立即使用的内存为 1431816 KiB,这部分内存包括了空闲内存以及可以快速从缓冲区和缓存中回收的部分内存。

目前大部分机器都已经关闭了swap,这个虚拟机也是关闭的,具体信息可参考Linux基础软件-swap介绍。

内存一般不会出现可用内存很低的情况,系统有内部保护机制(oom),这个以后单独来讲这个oom。

进程列表​​​​​​​

PID  USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1083 root      20   0  194472  12488   9612 S   1.0   0.3   0:00.59 systemd-journal
1254 root      20   0  240636  16716  12684 S   0.7   0.4   0:00.32 snapd

  • PID:进程ID。

  • USER:进程所有者。

  • PR:进程优先级。

  • NI:进程的nice值。

  • VIRT:虚拟内存使用量。

  • RES:物理内存使用量。

  • SHR:共享内存大小。

  • S:进程状态(R表示运行,S表示休眠,Z表示僵尸进程等)。

  • %CPU:CPU使用率,这个地方是按照单核cpu计算的,也就是会出现占用200%的情况,就等于使用了2核cpu。

  • %MEM:内存使用率。

  • TIME+:累计CPU时间。

  • COMMAND:进程的命令名称。

图片

总结

1.那些标注为红色的指标,就是我们需要关注的指标,通过这些指标我们就能综合判断当前服务器处于一个什么状态。

2.这些指标需要综合分析,主要的指标就是负载,活动进程数量,sy时间和wa时间,还有就是单个进程占用服务器资源的情况。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。


http://www.kler.cn/news/302980.html

相关文章:

  • 学习记录之C语言学习笔记2
  • 【笔记】绪论 轨道交通材料及其加工工艺
  • 密码学---黄道十二宫
  • 春秋云境靶场之CVE-2022-32991
  • 统计在线人数,百万数据表,查询很慢,如何统计,用php如何实现
  • 产品经理如何转型为AI产品经理,如何理解AI产品工程化
  • 工厂安灯系统在优化生产流程上的优势
  • redis底层—数据结构
  • 动态规划问题
  • day48
  • 【hot100-java】【接雨水】
  • NCBI-get-spesis-ref-IDs_fast.py
  • AI与艺术的碰撞:当机器开始创作,创造力何在?
  • HarmonyOS4升级到Harmonyos Next(Api 11)系列教程
  • 音视频开发之旅(93)-图像超分增强之Real-ESRGAN
  • Vue 3 组合式 API
  • C++ | Leetcode C++题解之第393题UTF-8编码验证
  • RabbitMQ SDK 支持发布、消费,连接恢复,死信队列,多种使用场景
  • db.fsyncLock() 和 db.fsyncUnlock()
  • 前后端分离项目实现SSE
  • Redis Sentinel(哨兵)详解
  • 从JVM角度看对象创建过程和内存布局
  • 基于微信小程序+Java+SSM+Vue+MySQL的宿舍管理系统
  • F1C100S/F1C200S的资料来源说明
  • 快速切换淘宝最新镜像源npm
  • js 时间戳转日期格式
  • 【STM32笔记】STM32CubeIDE介绍
  • 漫谈设计模式 [18]:策略模式
  • ISO 21434与网络安全管理系统(CSMS)的协同作用
  • Java 入门指南:Java 并发编程 —— 同步工具类 Exchanger(交换器)