由于说本人目前手头上有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将这些内容复制到文件末尾:
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