由于说本人目前手头上有10+台服务器在运维,每台服务器(配置都不高)都搭建了不同的服务。所以在多服务器运维的情况下,我稍微记一下笔记本,以后想找东西的时候就来看自己的博客!
这边附上自己的探针:https://status.mclzyun.com/
一、基础必备工具
1、htop
➀入门
安装代码:
apt install htop虽然说市面上还有一个叫 btop 的,但是有点花哨似乎不太合适专业的运维使用,当我们安装完htop之后输入以下命令就可以打开了:
htop
➁主页面分解
Ⅰ主页面分解

左上角:主要显示了CPU、运行内存和交换分区(SWAP)的占用情况
右上角:主要显示任务数量、平均负载以及系统的运行时间
下面部分:显示了所有的进程
操作提示区(也就是最下面那一行):显示F1-F10的快捷功能
Ⅱ进程列表分解

| 列名 | 全称 | 描述 |
|---|---|---|
| PID | Process ID | 进程 ID 号 |
| USER | User | 进程所有者 |
| PRI | Priority | 进程优先级 |
| NI | Nice | 进程的「友好度」(Nice 值)。友好值越高,进程越容易让出资源给其他进程 |
| VIR | Virtual Memory | 进程使用的虚拟内存 |
| RES | Resident Memory | 进程使用的物理内存 |
| SHR | Shared Memory | 进程使用的共享内存 |
| S | State | 当前进程状态 |
| CPU% | CPU Percentage | 进程使用的 CPU 时间百分比 |
| MEM% | Memory Percentage | 进程使用的内存百分比 |
| TIME+ | CPU Time | 进程启动以来使用的总 CPU 时间 |
| Command | Command | 启动进程的命令行 |
Ⅲ操作提示区分解

. 常用功能
- 常用功能快捷键如下:
| 快捷键 | 功能描述 |
|---|---|
F1 | 查看帮助,解释计量器颜色含义、进程状态和键盘快捷键等信息 |
F3或/ | 按名称搜索进程(F3查找下一个匹配项,Shift+F3查找上一个) |
F4 | 过滤进程 |
F5 | 切换树状显示,显示进程父子关系 |
F10或q | 退出 htop |
U | 按用户筛选进程 |
当我们点击F1时(查看帮助):

当我们点击F3时(搜索进程):(转载于:https://cloud.tencent.com/developer/article/1115041)

当我们点击F4时(进程过滤器):

从上面的结果可以看出search和filter的区别:
- search会将光标定位到符合条件的进程上,通过F3键进行逐个查找;
- 而filter会直接将符合条件的进程筛选出来。
- search和filter都使用ESC键来取消功能。
当我们点击F5(切换树状显示):

当我们点击F10或q时:(退出htop页面)
就退出了(废话)
.. 针对进程快捷键
- 针对选中进程的快捷键:
| 快捷键 | 功能描述 |
|---|---|
F7 | 降低进程优先级(提高 Nice 值) |
F8 | 提高进程优先级(降低 Nice 值) |
F9或k | 终止进程 |
啊 前面已经说明了 NICE值是:进程的「友好度」(Nice 值)。友好值越高,进程越容易让出资源给其他进程
当我们选择项目并且按下F9时(终止进程):

我们常用的就这两个:
- 15(TERM):安全退出(推荐)
- 9(KILL):强制杀掉(最后手段)
… 补充
你会发现我并没有讲F2是什么东西,这是一个设置用的,点击之后你会发现(Meters项):

我们可以根据自己的需要修改显式模式以及想要显示的内容,比如:以LED的形式显示CPU的使用情况,并且在左边的区域添加hostname,在右边的区区域添加clock


然后到达Display options部分:

剩下的的Colors 就是设置颜色方案,还有一个Columns就是显示进程行列中的具体内容
最后给大家讲解下点击F6能显示什么:(整理)

⓷按键&命令讲解
Ⅰ按键
U:取消所有选中的进程;
s:显示光标所在进程执行的系统调用; 下面显示的为init的系统调用信息:

I:对排序的结果进行反转显示:
例如,对PPID进行排序后,按‘I’键将会对PPID的排序结果进行反向排序。
a:绑定进程到指定的CPU
u:显示指定用户的进程

Ⅱ命令
显示指定用户进程:
htop -u xxxx设置刷新时间:
htop -d 时间(10=1秒)默认单位是十分之一秒
基本上就这一些命令
2、Vim
➀入门
输入以下命令即可安装:
apt -y install vim打开即可编辑文件:
vim 文件名.txt基本上市面上的所有文件(除了不正常的)都能阅读!
Vim 主要有三种基本模式:
- Normal 模式(默认模式)
- 用来浏览文件、删除、复制、移动光标等操作。
- 进入 Vim 默认就是这个模式。
- Insert 模式
- 用来输入文本。
- 进入方法:
i:在光标前插入I:行首插入a:在光标后插入A:行尾插入
- Command 模式
- 用来执行保存、退出、查找、替换等命令。
- 进入方法:按
:,例如:w保存、:q退出。
那如何在这三个模式中相互切换模式呢:
- Normal → Insert:
i/a/I/A - Insert → Normal:
Esc - Normal → Command:
:

当我们点击键盘上的 i 时,就进入了Insert模式,这时候你就可以随便输入你想要输入的文本了

那如果说切换到 Command模式如何操作呢?在Normal模式的前提下在键盘上按下 : 键

注意一个问题:注意 中/英 切换,以及大小写问题!
➁Normal模式操作
移动光标
| 功能 | Normal 模式快捷键 |
|---|---|
| 左右上下 | h j k l (我觉得正常键盘上的上下左右也够用了) |
| 行首/行尾 | 0 / $ |
| 跳到文件首尾 | gg / G |
| 跳到指定行 | 数字G |
插入文本
i:光标前插入a:光标后插入o:在下一行插入新行O:在上一行插入新行
删除与修改
| 功能 | Normal 模式快捷键 |
|---|---|
| 删除一个字符 | x |
| 删除一行 | dd |
| 删除到行尾 | d$ |
| 删除一个单词 | dw |
| 修改一个字符 | r + 字符 |
| 改整行 | cc |
| 改单词 | cw |




说句实话和单词相关的还是少用,我感觉识别的和我想象的不太一样
复制与粘贴
| 功能 | Normal 模式快捷键 |
|---|---|
| 复制一行 | yy |
| 复制一个单词 | yw |
| 粘贴 | p(光标后) / P(光标前) |
| 撤回 | u |
| 重做 | Ctrl + r |
| 重做上一次操作 | . |
| 匹配到下一个括号 | % |


查找与替换
- 查找单词:
/关键词→ 按n查找下一个,N查找上一个 - 替换:
- 当前行:
:s/旧/新/g - 全文件:
:%s/旧/新/g
- 当前行:

➂Command模式操作
保存与退出
| 功能 | 命令 |
|---|---|
| 保存 | :w |
| 保存并退出 | :wq 或 ZZ |
| 退出不保存 | :q! |
! 的意思就是强制(一般用作于普通用户组没权限的时候强制)
分屏与窗口切换(进阶)
- 垂直分屏:
:vsplit 文件名 - 水平分屏:
:split 文件名 - 切换窗口:
Ctrl + w然后按h/j/k/l


➃Insert模式
就是直接输入文本嘛 这有什么好说的(
3、nano
nano的话也是一款文本的编辑,但是的话用得很少。因为vim足够使用了!
但是的话我还是稍微记录下,因为你在设置 crontab(执行定期计划) 的时候默认就是用的nano

输入以下命令就可以打开计划任务的编辑文件:
crontab -e



接着键入 Ctrl + X 就可以退出 nano 页面了

其实的话有用的部分可能就这一点吧?毕竟我在操作 crontab 的时候才会使用到

4、zellij
zellij是什么?Zellij 是一个现代终端工作空间(terminal workspace),与 tmux 相似,但更易用、更直观、配置更简单、UI 更友好。它基于 Rust 开发,支持插件、布局文件、窗口浮动、内置状态栏、鼠标操作……
⚠️内存占用有点多(100MB左右)超小内存主机慎重!
➀入门
输入以下命令即可试用,关闭后软件也消失:(官网地址:https://zellij.dev/)
bash <(curl -L https://zellij.dev/launch)完整安装可以输入以下代码来直接实现安装:
wget https://github.com/zellij-org/zellij/releases/download/v0.43.1/zellij-no-web-x86_64-unknown-linux-musl.tar.gz
tar -zxvf zellij-no-web-x86_64-unknown-linux-musl.tar.gz
mv zellij /usr/local/bin/输入以下命令就可以呼唤 zellij了:
zellij
➁基础命令操作
接下来是基础的命令操作:
创建新的会话:
zellij -s <session name> 列出活动的会话:
zellij ls
连接到指定会话:
zellij a <session name> 杀死指定会话:
zellij k <session name>删除指定会话:
zellij d <session name>杀死所有会话:
zellij ka➂基础按键操作:

这是基础页面的按键操作,作用如下:
| Ctrl + <操作> | 作用 |
| <g> Lock | 激活锁定模式(防快捷键冲突) |
| <p> PANE | 切换到 PANE 中(窗口) |
| <t> TAB | 切换到 标签模式(相当于 tmux 的Window) |
| <n> RESIZE | 编辑窗口大小 |
| <h> MOVE | 移动窗口 |
| <s> SEARCH | 搜索会话 |
| <o> SESSION | |
| <q> QUIT | 退出 zellij |
ⅠPANEL页面
我们随便创建了一个叫 1 的会话:

首先的话我们先教大家如何创建新的会话页面,首先键入 Ctrl + P 进入面板模式:

随即之后按下 n 键来创建新的会话框:

此时亮黄色的会话就是我们的聚焦会话框
如果说我们想要切换会话框如何操作?同样的还是键入 Ctrl + P 进入面板模式,可以按键盘上的上下左右来进行切换会话,当选择好回话之后按下回车键就可以选中所选回话了!


鉴于这些会话框大概给大家解释下其中的作用:
| Ctrl+P 进入面板模式后的分支操作 | 作用 |
| n | 创建新的会话框 |
| ⬅️⬇️⬆️➡️ | 选择聚焦会话框 |
| x | 关闭聚焦会话框 |
| c | 重新命名聚焦对话款 |

ⅡRESIZE页面

按下 + – 两个键可以对所选的聚焦会话框进行变大变小。而⬆️⬇️⬅️➡️可以调整会话框大小
另外的话键入 Alt + [ 或 ] 可以将会话框调整成水平或者垂直
ⅢMOVE页面

就一个调整会话框的位置的作用
⬆️⬇️↔️可以对所聚焦的会话框调整位置。
ⅥTAB页面
既然说PANE是在同一个标签创建多个会话,那TAB就是可以创建多个标签

那我们解剖下在 Ctrl + t 下的分支的作用:
| Ctrl + t 页面下的分支操作 | 作用 |
| n | 创建新的标签 |
| ↔️ | 在标签中切换到另一个标签 |
| x | 关闭标签 |
| r | 重新命名标签 |
| s | 同步?(我操作的时候就是复制标签过来) |
Ⅳ设置进入ssh就打开zellij
输入打开 Shell 配置文件:
nano ~/.bashrc将这些内容复制到文件末尾:
# SSH 登录时自动进入 Zellij
if [ -n "$SSH_CONNECTION" ] && [ -z "$ZELLIJ" ] && command -v zellij >/dev/null 2>&1; then
zellij attach --create
return
fi
Ctrl + O 保存 后 按回车 后按Ctrl+X退出,重新登陆SSH回话后就会发现自动打开 zellij 了!
二、系统网络监控与诊断
1、nethogs
nethogs 是 Linux 下非常实用的按进程显示网络带宽使用情况的工具。
与 iftop、nload 等工具只显示整体带宽不同,nethogs 可以直接告诉你是哪个进程在占网速!
➀入门
安装方式:
apt -y install nethogs输入这个命令即可安装!那如何使用呢:
nethogs

- PID:进程 ID
- PROGRAM:程序名称
- DEV:网卡名称
- SENT:上传速度
- RECEIVED:下载速度

➁命令详解
常用命令选项
| 选项 | 说明 |
|---|---|
-d | 设置刷新间隔时间(秒) |
-c | 刷新指定次数后退出 |
-t | 追踪模式(显示累计流量) |
-p | 混杂模式(监听所有流量) |
-V | 显示版本信息 |
-h | 显示帮助信息 |
监控特定网络接口:
nethogs eth0也可以指定检测多个网卡:
nethogs eth0 eth1刷新间隔设置(秒):
nethogs -d 5 # 每5秒刷新一次追踪特定进程:
nethogs -p | grep "进程名"监控特定用户进程:
nethogs -u <username>➂交互按键
进入程序后,可使用以下快捷键:
| 按键 | 功能 |
|---|---|
| m | 切换显示单位:KB/s、B/s 等 |
| r | 按接收速度排序 |
| s | 按发送速度排序 |
| q | 退出 Nethogs |
2、iftop
iftop 是 Linux 下实时网络流量监控工具,可以让你快速看到当前服务器与外部各个 IP 之间的实时带宽占用情况,是排查网络问题的神器。
➀入门
输入以下命令即可安装:
apt -y install iftop输入以下命令就可以打开 iftop:
iftop
| 区域 | 说明 |
|---|---|
| 左侧 | 你的服务器 IP 和端口 |
| 右侧 | 对端 IP 和端口 |
=> | 上传流量(Outgoing) |
<= | 下载流量(Incoming) |
| 上方标尺 | 流量可视化刻度 |
| 右上角三个数字 | 2 秒平均、10 秒平均、40 秒平均 |
下面内容的解释:

TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
➁命令操作
帮助页面:

翻译:
基本参数
| 参数 | 说明 |
|---|---|
-h | 显示帮助信息 |
-n | 不进行主机名解析(只显示 IP,推荐,性能更好) |
-N | 不将端口号转换为服务名(如 80 → http) |
-p | 混杂模式,显示同一网段中其他主机的流量 |
-b | 不显示底部的流量柱状图 |
-B | 以 字节(Bytes) 为单位显示带宽(默认是 bit/s) |
网卡与过滤相关
| 参数 | 说明 |
|---|---|
-i <interface> | 指定监听的网卡(如 eth0、ens33) |
-f <filter> | 使用 BPF 过滤表达式 过滤数据包 |
-F <net/mask> | 显示指定 IPv4 网段 的进出流量 |
-G <net6/mask6> | 显示指定 IPv6 网段 的进出流量 |
-l | 显示并统计 IPv6 本地链路流量(默认关闭) |
📌 示例:
iftop -i eth0 -n
iftop -F 192.168.1.0/24
显示内容相关
| 参数 | 说明 |
|---|---|
-P | 同时显示 端口号 + 主机 |
-m <limit> | 设置带宽显示的最大刻度(如 100M、1G) |
-c <config> | 指定自定义配置文件 |
-t | 文本模式输出(不使用 ncurses,适合脚本) |
排序方式(Sorting orders)
| 排序参数 | 说明 |
|---|---|
-o 2s | 按 2 秒平均流量 排序 |
-o 10s | 按 10 秒平均流量 排序(默认) |
-o 40s | 按 40 秒平均流量 排序 |
-o source | 按 源地址 排序 |
-o destination | 按 目标地址 排序 |
仅在 -t(文本模式)下可用的参数
⚠️ 以下参数 必须配合
-t使用
| 参数 | 说明 |
|---|---|
-s <num> | 运行 num 秒后输出一次结果并退出 |
-L <num> | 指定输出的最大行数 |
📌 示例:
iftop -t -s 10 -L 20➂按键操作
运行后可以直接按键操作:(参考来源:https://cloud.tencent.com/developer/article/1806462)
| 按键 | 功能说明 |
|---|---|
| P | 暂停 / 继续刷新显示 |
| h | 在 交互参数界面 与 状态输出界面 之间切换 |
| b | 显示 / 隐藏 平均流量图形条(bar graph) |
| B | 切换显示 2 秒 / 10 秒 / 40 秒 内的平均流量 |
| T | 显示 / 隐藏 每个连接的总流量 |
| j / k | 向下 / 向上滚动当前连接列表 |
| l | 打开 输出过滤器(输入 IP 或条件,仅显示匹配流量) |
| L | 切换 流量刻度范围(影响图形条比例) |
| q | 退出 iftop |
| n | 在 IP 地址 / 主机名(DNS) 显示之间切换 |
| s | 显示 / 隐藏 本地源主机信息 |
| d | 显示 / 隐藏 远端目标主机信息 |
| t | 切换显示格式:① 两行显示发送/接收② 一行显示发送/接收③ 仅显示发送或接收 |
| N | 切换显示 端口号 / 端口对应的服务名称 |
| S | 显示 / 隐藏 本地源端口 |
| D | 显示 / 隐藏 远端目标端口 |
| p | 显示 / 隐藏 端口信息(总开关) |
| 1 | 按 最近 2 秒 平均流量排序 |
| 2 | 按 最近 10 秒 平均流量排序 |
| 3 | 按 最近 40 秒 平均流量排序 |
| < | 按 本地主机名 / IP 地址 排序 |
| > | 按 远端目标主机名 / IP 地址 排序 |
| o | 固定 / 取消固定 当前选中的连接 |
我让AI生成了一个新手建议:
新手推荐组合用法:
n + p:看清楚 IP + 端口1 / 2 / 3:快速定位 瞬时 / 稳定流量来源l:过滤某个 IP,专注排查
3、vnstat
vnStat 是一个基于 网卡接口 的网络流量统计工具,它最大的特点是:
- 可以记录历史流量
- 后台常驻、资源占用极低
- 不抓包、不分析进程,纯统计
- 非常适合服务器长期运行
和我们之前介绍的两个工具相比差别就是在:nethogs / iftop 看实时,vnStat 看历史
➀入门
输入以下命令即可安装:
apt install -y vnstat然后确定下你安装的版本:
然后确定下你安装的 vnstat 的版本:
Ⅰ初始化数据库(新版本的跳过了):
然后的话我们要先初始化监控数据库:
# 先查看所有的可监控网口
vnstat --iflist
# 然后再绑定网口
vnstat -u -i eth0
⚠️ 注意:
vnStat 2.x 版本已移除 -u 初始化参数,数据库会在服务启动后自动创建。
Ⅱ基本用法
输入以下命令即可打开 vnstat:
vnstat
主页面四个统计数据的含义:
| 字母 | 含义 |
| rx | 服务器接收的流量总量 |
| tx | 服务器发送出去的流量总量 |
| total | rx + tx 的总和 |
| estimated | 按当前统计周期的使用趋势,推算整个周期结束时的预计总流量 |
estimated有什么作用?
✔ 判断 这个月会不会超流量
✔ 提前预警 VPS 流量爆表
✔ 运维做容量评估
算是相当于预测下你这个月流量够不够用(无限流量当我没说)
➁命令操作
Ⅰ命令列表详解(AI翻译)
时间维度统计参数
| 参数 | 长参数 | 含义 | 典型用途 |
|---|---|---|---|
-5 | --fiveminutes | 显示 5 分钟统计 | 查看短时间流量变化 |
-h | --hours | 按小时统计 | 分析某时间段异常 |
-hg | --hoursgraph | 小时流量图(ASCII) | 博客配图、趋势观察 |
-d | --days | 按天统计 | 排查哪一天流量异常 |
-m | --months | 按月统计 | 对账 VPS 流量 |
-y | --years | 按年统计 | 长期趋势分析 |
-t | --top | 流量最高的几天 | 找流量峰值日期 |
时间范围筛选参数
| 参数 | 含义 | 示例 |
|---|---|---|
-b | 设置开始日期 | -b 2025-12-01 |
-e | 设置结束日期 | -e 2025-12-10 |
输出格式参数(脚本 / 自动化)
| 参数 | 含义 | 适用场景 |
|---|---|---|
--oneline | 单行输出 | Shell 脚本 |
--json | JSON 格式输出 | API / 监控系统 |
--xml | XML 格式输出 | 旧系统对接 |
实时与计算类参数
| 参数 | 含义 | 说明 |
|---|---|---|
-tr | 计算指定时间段流量 | 非数据库统计 |
-l | 实时流量显示 | 精度一般,不如 iftop |
Ⅱ操作实践
查看每天的流量统计:
vnstat -d
查看每月流量统计:
vnstat -m
查看每小时的流量统计:
vnstat -h
查看前10的流量统计:

你也可以看实时的流量数据(但是感觉不如我们前面说的nethogs 和 iftop):
vnstat -l
你也可以直接看流量统计简要:
vnstat -s
可以输入以下命令更改输出格式(方便阅读?)
vnstat --style 0以下是可用的样式编号:(参考来源:https://bbs.huaweicloud.com/blogs/354286)
- 0 – 窄输出
- 1 – 启用条形列
- 2 – 启用条形栏,并在摘要中显示平均流量率
- 3 – 在所有输出中显示平均流量
- 4 – 与实时模式 (vnstat -l) 结合使用时,禁用终端控制字符
4、mtr
什么叫做 mtr?
mtr = traceroute + ping 的合体进阶版,用来定位网络抖动、丢包、延迟异常
在运维场景里,我们关心的不是“能不能连上”,而是:
- 🧠 卡在哪里
- 📉 哪一跳开始丢包
- 🕒 延迟是不是突然暴涨
- 🌍 是我服务器的问题,还是运营商/对方的问题
👉 mtr 就是专门干这个的
①入门
安装 mtr 只需以下命令即可:
apt -y install mtr查看软件版本(验证安装):
mtr -version
查看实时模式(交互模式):
mtr 8.8.8.8
页面内容解释:
- 主机名或IP地址
- 丢包率(Loss%)
- Snt = Sent(已发送的探测包数量)
- 最近延迟(Last)
- 平均延迟(Avg)
- 最佳延迟(Best)
- 最差延迟(Wrst)
- 标准差(StDev) – 传统说法叫做抖动 越大越卡
➁命令参考
常用选项参数说明(选自:https://www.runoob.com/linux/linux-comm-mtr.html)
| 选项 | 说明 |
|---|---|
-4 | 强制使用 IPv4 |
-6 | 强制使用 IPv6 |
-c COUNT | 设置发送的ping包数量 |
-i SECONDS | 设置ping间隔时间(秒) |
-n | 不解析主机名,显示IP地址 |
-r | 生成报告模式(非交互式) |
-s BYTES | 设置ping包大小(字节) |
-w | 宽输出模式,显示完整主机名 |
-z | 显示AS(自治系统)编号 |
--report | 等同于 -r,生成报告后退出 |
--report-wide | 宽格式报告 |
接下来给大家介绍几个经常用的命令:
报告模式:
mtr -r 8.8.8.8
一条命令输出问题所在:
mtr -r -c 100 -n -w 8.8.8.8
| 参数 | 含义 |
|---|---|
-r | 报告模式 |
-c 100 | 发送 100 个包(默认 10 太少) |
-n | 不解析域名(更快 + 更干净) |
-w | 宽表格,避免换行 |
当然也可以写入文件当中:
mtr -r -c 10 google.com > mtr_report.txt设置ping包大小和间隔:
mtr -s 100 -i 0.5 example.com这样可以设置每个 ping 包之间间隔 0.5 秒
查看AS自治系统编码:
mtr -z example.com通过TCP的方式来mtr(防止有一些服务器禁用ICMP):
mtr --tcp 8.8.8.8指定某端口:
mtr --port 8080 example.com➂使用场景
场景 1️⃣:用户说“偶尔很卡”
mtr -r -c 200 -n 用户IP看点:
- 是否 StDev 很大
- 是否 Wrst 特别高
📌 结论模板:
链路存在明显抖动,非应用层问题
场景 2️⃣:怀疑是机房 / 运营商问题
mtr -r -c 100 -n 目标IP > mtr.txt把 mtr.txt 发工单
⚠️ 这是标准运维证据
场景 3️⃣:国内 → 国外延迟高
mtr -r -c 100 -n 1.1.1.1如果:
- 国内段延迟低
- 出国后暴涨
👉 国际出口拥堵(不是你服务器的问题)
5、ss
ss是什么东西?定位一句话: ss = 比 netstat 更快、更准的 Socket 状态查看工具
ss他能做什么?ss(Socket Statistics)用于查看:
- TCP / UDP 连接
- 端口监听情况
- 连接状态(ESTAB / TIME-WAIT / SYN-RECV)
- 谁占用了端口
- 是否存在连接异常、攻击迹象
👉 99% 的端口 / 网络问题,都能先用 ss 看一眼
➀入门
安装方法:安装个der 系统自带!
输入以下命令可以查看所有的套接字连接:

查看所有的tcp连接:
ss -t
查看所有的udp连接:
ss -u
解释下页面的基本信息:
| 字段 | 含义 | 运维解读 |
|---|---|---|
| Recv-Q | 接收队列 | 内核已接收但应用尚未处理的数据 |
| Send-Q | 发送队列 | 应用已发送但未被对端确认的数据 |
| Local Address | 本地 IP | 服务监听或通信的本地地址 |
| Port | 本地端口 | 服务使用的端口 |
| Peer Address | 对端 IP | 客户端或远端地址 |
| Process | 进程信息 | 占用端口的进程 |
| 字段 | 实际含义 | 运维判断 |
|---|---|---|
| Recv-Q | 已完成三次握手,等待 accept() 的连接数 | 高 → 服务繁忙 |
| Send-Q | 最大允许排队的连接数(backlog) | 小 → 容易拒绝连接 |
基本上 Recv-Q 和 Send-Q 两个输出都是0的话都是网络畅通,数字越高越完蛋
所以我们说:Recv-Q 看服务处理能力,Send-Q 看网络与对端状态
➁命令操作
options 参数说明:(转载自:https://www.runoob.com/linux/linux-comm-ss.html)
-a, --all:显示所有的套接字,包括监听和非监听的。-t, --tcp:仅显示 TCP 套接字。-u, --udp:仅显示 UDP 套接字。-l, --listening:仅显示监听状态的套接字。-p, --processes:显示与套接字关联的进程信息。-n, --numeric:以数字形式显示地址,而不是解析成主机名。-r, --resolve:将主机名解析为 IP 地址。-s, --summary:显示套接字的摘要信息。-4:仅显示 IPv4 套接字。-6:仅显示 IPv6 套接字。-i, --info:显示详细的内部信息。-o, --options:显示 TCP 计时器信息。-K, --kill:通过 ID 杀死指定的 socket。-f, --family=FAMILY:指定协议族(如inet,inet6,unix,link)。-m, --memory:显示每个套接字使用的内存。-H, --no-header:不显示标题行。-v, --verbose:显示详细的输出。
我们常用的一个组合命令:
ss -tunlp
| 参数 | 含义 |
|---|---|
-t | TCP |
-u | UDP |
-n | 数字显示(不 DNS) |
-l | 只看监听 |
-p | 显示进程 |
你会突然发现 怎么上面导航栏又多了 Netid 那些参数?这是啥?我也给你贴出来!
| 字段 | 含义 |
|---|---|
| Netid | 协议(tcp / udp) |
| State | 状态(LISTEN / ESTAB) |
| Process | 占用进程 |
关于TCP的一些状态解释:
| 状态 | 含义 | 运维解读 |
|---|---|---|
| LISTEN | 监听中 | 服务正常 |
| ESTAB | 已建立连接 | 正在通信 |
| TIME-WAIT | 等待关闭 | 多了可能端口耗尽 |
| SYN-RECV | 半连接 | 可能被 SYN Flood |
| CLOSE-WAIT | 对端断了 | 程序可能有 bug |
➂实战操作
查看端口是否开放:
ss -tunlp | grep 3306
lsof -i:3306 # 这是我常用的有输出结果就是开放端口 没有就是没开放
查看当前的 TCP 连接数量:(看看你服务器有没有被人打)
ss -t | wc -l查看某端口的连接数量(排查谁被打了):
ss -tn state established '( sport = :443 )' | wc -l
查看链接IP(看看谁干的!):
ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
AI总结常用命令:
ss -tunlp # 查看监听端口
ss -tan # 查看所有 TCP
ss -t state established # 查看已建立连接
ss -tan state time-wait # TIME-WAIT
ss -tan state syn-recv # 半连接
ss -tunlp | grep :80 # 查看 80 端口三、磁盘分析工具
1、iotop
iotop 是干嘛的?一句话说清楚:iotop = 实时查看“哪个进程正在疯狂读写磁盘”
➀入门
输入以下命令即可安装 iotop:
apt -y install iotop

| 内容 | 解释 |
| TID | 进程ID/线程ID |
| PRIO | I/O优先级 |
| USER | 用户 |
| DISK READ | 硬盘读取 |
| DISK WRITE | 硬盘写入 |
| COMMAND | 命令(可以直接查看占用磁盘真凶) |
主页面交互按键:(转载自:https://www.runoob.com/linux/linux-comm-iotop.html)
| 快捷键 | 功能 |
|---|---|
| 左右箭头 | 改变排序字段 |
| r | 反向排序 |
| o | 只显示活跃I/O进程(相当于-o选项) |
| p | 进程/线程显示模式切换 |
| a | 累计/实时显示模式切换 |
| q | 退出iotop |
| i | 改变优先级过滤(只显示更高优先级的进程) |
| 任意键 | 强制刷新显示 |
➁命令操作
查看真正占用IO的应用:
iotop -o关闭交互模式(以直接输出的形式放出内容):
iotop -o -b监控指定用户:
iotop -u apache监控指定进程:
iotop -p 1234记录IO情况:
iotop -b -t -n 5 -d 10 > iotop_log.txt每10秒记录一次I/O情况,共记录5次,结果保存到文件中供后续分析。
2、ncdu
ncdu = NCurses Disk Usage 一个基于终端的磁盘空间分析工具,比 du + sort 直观得多。
➀入门
输入以下命令即可安装 ncdu:
apt -y install ncdu输入以下命令即可分析当前目录的磁盘占用情况:

输入以下命令可以在指定目录进行扫描:
ncdu /dir在这个页面有基本的按键操作:
| 按键 | 功能 |
|---|---|
| ↑ / ↓ 或者 j / k | 上下移动 |
| Enter | 进入目录 |
| ← | 返回上级目录 |
| q | 退出 ncdu |
➁按键操作
| 按键 | 作用 |
|---|---|
| s | 按大小排序 |
| n | 按名称排序 |
| C(大写) | 按文件数量排序 |
| d | 删除选定的文件或目录 |
| g | 显示百分比和/或图表 |
| i | 查看详细信息 |
| c(小写) | 切换子项目计数的显示 |
| r | 重新计算当前目录 |
| q | 退出ncdu |

➂命令操作
跨文件系统扫描:
ncdu -x /作用:防止扫描 NFS / 外置盘
在安静模式下运行 Ncdu:
ncdu -q显示所有文件,包括隐藏文件和目录(参考来源:https://zhuanlan.zhihu.com/p/700785397):
ncdu -a /path/to/directory将扫描结果保存到一个文件中:
ncdu -o /path/to/output/file /path/to/directory三、系统调试工具
1、journalctl
journalctl是什么?他能做什么?
一句话:查看 systemd 管理的所有日志
- 内核日志
- 系统启动日志
- 服务(nginx、ssh、docker…)
- 用户登录日志
- 错误 / 崩溃 / 异常
📌 它 ≠ /var/log/messages
📌 它 ≠ 单个服务日志文件
📌 它 = 系统级日志中心
➀入门
输入以下命令即可查看全部日志(不太推荐):
journalctl
页面交互操作:
| 按键 | 作用 |
| ↑ ↓ | 滚动(就上面看看下面看看) |
| /关键词 | 搜索关键词 |
| n / N | 下一个 / 上一个匹配 |
| q | 退出journalctl |
➁命令操作
常用选项概览(转载自:https://www.runoob.com/linux/linux-comm-journalctl.html)
| 选项 | 说明 |
|---|---|
-b | 显示本次启动的日志 |
-f | 跟踪日志(类似 tail -f) |
-k | 只显示内核消息 |
-u | 显示指定单元的日志 |
-n | 显示最近的n条日志 |
--since | 显示指定时间之后的日志 |
--until | 显示指定时间之前的日志 |
只看最近日志:
journalctl -e查看最近的50条信息:
journalctl -n 50按时间来开始查看日志:
journalctl --since "2025-12-19 10:00:00" # 查看指定时间journalctl --since today # 当然也可以看今天
journalctl --since yesterday # 也可以看昨天当然也可以指定时间范围:
journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 12:00:00"查看错误日志:
journalctl -p err查看指定服务日志:
journalctl -u nginx # 你可以看 nginx 的日志
journalctl -u ssh # 你可以看 ssh 的日志也可以查看实时滚动的指定服务日志:
journalctl -u nginx -f查看系统启动的日志:
journalctl -b查看上一次的启动命令:
journalctl -b -1日志级别说明表
| 级别 | 含义 |
|---|---|
| emerg | 系统不可用 |
| alert | 必须立即处理 |
| crit | 严重错误 |
| err | 错误 |
| warning | 警告 |
| notice | 正常但重要 |
| info | 信息 |
| debug | 调试 |
➂日志清理(谨慎操作)
查看日志占用空间:
journalctl --disk-usage只保留 7 天日志:
journalctl --vacuum-time=7d限制日志最大 500MB:
journalctl --vacuum-size=500M