楼仔

V2

2022/05/31阅读:28主题:橙心

线上问题排查高频命令,一网打尽!

大家好,我是楼仔!

大家有没有这种感觉,每当处理线上问题时,还需要百度各种命令的用法,因为有的命令长时间不用,慢慢就生疏了。

比如上次帮二哥解决问题时,就一边查问题,一边百度各种命令,效率不要太低,所以这次就把我之前排查问题的常用命令,系统总结一下。

我主要用来做记录,大家可以白嫖 + 收藏 + 转发哈 ~~

1. 机器资源

1.1 top

1.1.1 命令详解

top 命令经常用来监视系统活动进程和系统的资源负载信息等,在日常的运维工作中也是最基本的命令。

第一行:top - 10:51:41 up 4 days, 15:42, 0 users, load average: 0.01, 0.04, 0.07

  • 系统时间
  • 运行时间
  • 登录终端数
  • 系统负载(三个数值分别为 1 分钟、5 分钟、15 分钟内的平均值,数值越小意味着负载越低)

第二行:Tasks: 23 total, 1 running, 16 sleeping, 6 stopped, 0 zombie

  • 进程总数
  • 运行中的进程数
  • 睡眠中的进程数
  • 停止的进程数
  • 僵尸的进程数

第三行:Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

  • 用户占用资源百分比
  • 系统内核占用资源百分比
  • 改变过优先级的进程资源百分比
  • 空闲的资源百分比
  • 等待输入输出的 cpu 时间百分比
  • 硬中断占用的 cpu 百分比
  • 软中断占用的 cpu 百分比
  • 用于虚拟 cpu 的情况

第四行Mem: 2046756k total, 1965828k used, 80928k free, 124648k buffers

  • 物理内存总量
  • 内存使用量
  • 内存空闲量
  • 作为内核缓存的内存量

第五行:Swap: 1048572k total, 128k used, 1048444k free, 1312384k cached

  • 虚拟内存总量
  • 虚拟内存空闲量
  • 虚拟内存使用量
  • 已被提前加载的内存量

第六行:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

  • PID:进程 ID
  • USER:进程所有者的用户名
  • PR:优先级
  • NI:nice值(负值表示高优先级,正值表示低优先级)
  • VIRT:进程使用的虚拟内存总量(KB)
  • RES:进程使用的未被换出的物理内存大小(KB)
  • SHR:共享内存大小(KB)
  • S:进程状态
  • %CPU:进程上次更新到现在的 CPU 时间占用百分比
  • %MEM:物理内存占比
  • TIME+:进程使用的 CPU 时间总计(单位1/100秒)
  • COMMAND:命令名

1.1.2 使用技巧

常用命令

  • d:刷新时间
  • a:内存倒序排列
  • c:显示进程的命令行参数
  • n:只执行一次
  • p:指定线程
top   // 常用,每隔5秒刷新,默认按照CPU占用量排序
top -d 2  // 每隔2秒刷新
top -a  // 常用,每隔5秒刷新,按内存倒序排列
top -c  // 每隔5秒刷新,并显示进程的命令行参数(默认只有进程名)
top -n 1 // 只执行一次
top -p 12345 -p 6789// 每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 // 每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数

重点关注

  • top 默认按照 CPU 的占用量来排序;
  • 使用命令 "top -ab -n 1 | grep php-fpm" 查询某个进程;
  • 通过快捷键更改显示内容:
    • 更改显示内容通过 f 键可以选择显示的内容(按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定)
    • 按 o 键可以改变列的显示顺序(按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动,最后按回车键确定)

考一下大家,命令 “top -d 2 -ac -n 1” 是什么意思呢?

1.2 uptime

uptime 命令能够打印系统总共运行了多长时间和系统的平均负载。

  • 现在时间
  • 系统已经运行了多长时间
  • 目前有多少登陆用户
  • 系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。

相当于 top 的简单版!

1.3 free(内存)

1.3.1 命令详解

free 命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

  • total:总计物理内存的大小;
  • used:已使用多少;
  • free:可用内存多少;
  • Shared:多个进程共享的内存总额;
  • Buffers/cached:磁盘缓存的大小。

1.3.2 常用命令

  • m:以m为单位来显示内存的信息;
  • g:以G为单位来显示内存的信息;
  • s:每隔N秒打印一次内存信息。
free       // 默认按照k(b)的计数单位统计
free -m    // 常用,以m为单位来显示内存的信息
free -g    // 常用,以G为单位来显示内存的信息
free -s 3  // 每隔3秒打印一次内存信息,直到用ctrl+c结束

1.4 df(磁盘)

1.4.1 命令详解

df 命令用来检查linux服务器的文件系统的磁盘空间占用情况。

1.4.2 常用命令

  • a:全部文件系统列表;
  • h:方便阅读方式显示
  • i:显示inode信息。
df     // 磁盘空间将以 1KB 为单位进行显示
df -h  // 常用,使用人类可读的格式
df -i  // 以inode模式来显示磁盘使用情况

df -h 和 df -i 的区别是什么?

同样是显示磁盘使用情况,为什么显示占用百分比相差甚远?

inode 包含的信息:文件的字节数,拥有者 id,组 id,权限,改动时间,链接数,数据 block 的位置,不表示文件大小

1.5 du(文件)

du 会显示指定的目录或文件所占用的磁盘空间。

常用命令

du     // 查看当前目录、所有子目录大小(KB单位)
du -h  // 常用,查看当前目录、所有子目录大小(MB单位)
du -sh // 常用,只展示当前目录的大小,所包含的目录统计在内(MB单位)
du -sh ./*  // 常用,查看当前目录大小,展示所包含的所有目录大小(MB单位)
du -sh * | sort -rh     // 常用,查看当前目录大小,并排序
du -h | awk '$1 ~ /G/'  // 常用,找到 G 级别的目录

1.6 查询 CPU

cat /proc/cpuinfo
  • processor:系统中逻辑处理核的编号
  • cpu MHz:CPU 的实际使用主频;
  • cache size:CPU 二级缓存大小;
  • physical id:单个 CPU 的标号;
  • siblings:单个 CPU 逻辑物理核数;
  • core id:当前物理核在其所处 CPU 中的编号,这个编号不一定连续;
  • cpu cores:该逻辑核所处CPU的物理核数;
  • clflush size:每次刷新缓存的大小单位;
  • cache_alignment:缓存地址对齐单位。

更多可查看:https://blog.csdn.net/lj19990824/article/details/120418884

Nginx

分类:

后端

标签:

后端

作者介绍

楼仔
V2