first commit

This commit is contained in:
CrazyJasonwell
2026-07-23 20:36:13 +08:00
commit 513b68be8c
7915 changed files with 2642530 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
---
created: 2025-08-30T10:17
updated: 2025-09-09T21:32
---
8610158842:AAHeHywu8VfyxAUyPdmb7MK46O-tftkmA4g
## 1 Googl Gemini
- 使用指南
https://zhuanlan.zhihu.com/p/1929222525176512837
摘要:
**Gemini Pro: Google AI 的终极指南 (2025最新版)**
全面体验 [Gemini 中文版](https://link.zhihu.com/?target=https%3A//chat.lanjingai.org/)**国内直连,支持 Gemini 2.5 Pro 及中文版功能**
本指南提供全面的 **Gemini 国内使用指南**,包括国内可用的 [Gemini 官网入口](https://link.zhihu.com/?target=https%3A//xsimplechat.com/)、[Gemini 网页版](https://link.zhihu.com/?target=https%3A//xsimplechat.com/)、[Gemini 国内镜像网站](https://link.zhihu.com/?target=https%3A//chat.lanjingai.org/) 和详细的使用教程,助您快速上手 Gemini~
**Gemini 中文版入口:**[https://chat.lanjingai.org](https://link.zhihu.com/?target=https%3A//chat.lanjingai.org/) **Gemini 镜像网站:**[https://xsimplechat.com](https://link.zhihu.com/?target=https%3A//xsimplechat.com/)
- 中文入口
https://chat.lanjingai.org/
欢迎使用 [**🎉蓝鲸AIhttps://chat.lanjingai.org**](https://chat.lanjingai.org/) (按 Ctrl + D 收藏本站)
**备用网址** [**https://ai.lanjing.pro**](https://ai.lanjing.pro/)、[**https://gpt.lanjing.pro**](https://gpt.lanjing.pro/) 都保存一下~
**电脑客户端****[🌟Windows客户端](https://chat.lanjingai.org/file/system/LanJingAI-Windows.zip)**、 **[🌟MacOS客户端](https://chat.lanjingai.org/file/system/LanJingAI-MacOS.zip)** | **手机APP****[🌟Android 下载](https://chat.lanjingai.org/file/system/LanJingAI-Android.zip)**
**客服QQ群** **470620736**
## 2 ObsidianAI插件
![image.png](https://joyimg.cpolar.top/i/2025/08/31/68b3bf0beaf6a.png)
https://forum-zh.obsidian.md/t/topic/31483
@@ -0,0 +1,140 @@
---
created: 2025-08-30T11:45
updated: 2025-09-22T13:27
---
![](https://csdnimg.cn/release/blogv2/dist/pc/img/original.png)
[李孟聊人工智能](https://limeng.blog.csdn.net/ "李孟聊人工智能") ![](https://csdnimg.cn/release/blogv2/dist/pc/img/newUpTime2.png)
已于 2025-03-26 21:12:21 修改
于 2025-03-26 21:12:01 首次发布
本文为博主(李孟)原创文章,未经博主允许不得转载。
谷歌3月25日发布的Gemini 2.5 Pro可能成为AI发展史上的关键转折点。
尽管企业对其最新模型夸大其词已成常态,但2.5 Pro发布即登顶LMArena排行榜(该榜单由人类评估员根据交互质量和实用性对AI进行排名)的事实表明,这绝非营销噱头。
![](https://i-blog.csdnimg.cn/direct/08e3d6492aaf44898e7bc65ae76b9130.png)
该模型的独特之处在于其架构设计。
Gemini 2.5 Pro并非简单匹配训练数据模式,而是将谷歌所称的"思考能力"直接融入设计。
在生成回应前,模型会有意识地将复杂问题分解为逻辑步骤——这一过程比早期模型的统计近似更接近人类推理方式。
这并非思维链提示(chain-of-thought prompting)的简单重组,而是植根于模型底层的核心机制。
现在你可以在**Google Colab上免费使用**
**特点**
------
谷歌最新AI模型,拥有:
**100万token上下文窗口**(超长记忆!)
**推理能力超越GPT-4 Turbo**
**多模态支持**(文本/图像/代码/音频)
**比Gemini 1.5 Pro更快更便宜**
![](https://i-blog.csdnimg.cn/direct/6b46257540534aae9cd622935e3a53fa.png)
**性能基准**
--------
• MMLU测试准确率91.4%
• 复杂推理任务优于GPT-4
• 可处理超长文档(100万token≈70万单词!)
![](https://i-blog.csdnimg.cn/direct/6309afd04b484f889367b180ae5042be.png)
**Colab免费使用指南**
---------------
**步骤1:打开Google Colab**
👉 [点击此处进入Colab](https://colab.research.google.com/) [https://colab.research.google.com/](https://colab.research.google.com/)
**步骤2:安装并导入Gemini**
```python
!pip install google-genai
from google import genai
from google.genai import types
import os
from PIL import Image
```
**步骤3:设置API密钥(免费!)**
```python
os.environ["GEMINI_API_KEY"] = "您的API密钥"
gemini_client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])
```
_注:_[在此获取API密钥](https://ai.google.dev/) [https://aistudio.google.com/](https://aistudio.google.com/)
**完整案例:多模态推理(文本+图像)**
---------------------
让Gemini根据路况图片判断卡车能否准时抵达目的地
📌 **代码实现**
```python
from google.colab import files
uploaded = files.upload()
image_path = next(iter(uploaded.keys()))
img = Image.open(image_path)
prompt = """
我正驾驶卡车行驶在这条路上,现在是中午12点。
能否在13点前到达110公里外的目的地?
"""
response = gemini_client.models.generate_content(
model="gemini-2.5-pro-exp-03-25",
contents=[prompt, img]
)
print(response.text)
```
**输入**
![](https://i-blog.csdnimg.cn/direct/f2bf58d674084403ac768ceb035d0b3a.png)
📸 **预期输出**
Gemini会分析道路图像(车流、限速等)并给出类似回答:
> “根据当前路况和卡车平均时速(60公里/小时),1小时内无法行驶110公里。至少需要1小时50分钟。”
**进阶技巧**
--------
• 使用高清图像提升分析精度
• 尝试超长上下文提示(上限100万token!)
• 组合文本+代码+图像进行复杂推理
**立即尝试并分享你的成果!** **你打算用Gemini 2.5 Pro开发什么?**
[Gemini 2.5 Pro 使用地址](https://aistudio.google.com/app/prompts/new_chat?model=gemini-2.5-pro-exp-03-25)
@@ -0,0 +1,76 @@
---
created: 2025-08-30T11:44
updated: 2025-09-22T13:26
---
title: Mac使用docker时,卷默认挂载路径/var/lib/docker/volumes不存在问题\_mac docker 卷默认挂载路径不存在-CSDN博客
在Docker中,卷默认挂载在/var/lib/docker/volumes路径下。当尝试访问MacOS的该路径时,可能会遇到路径不存在的问题。原因是Docker在Mac上运行于虚拟机内部。解决方法是通过运行特定命令进入Docker的挂载空间,如使用\`docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh\`,然后可以查看和操作卷挂载的实际路径。退出该环境使用\`exit\`命令。
keywords: mac docker 卷默认挂载路径不存在
[blog.csdn.net](https://blog.csdn.net/qq_43758789/article/details/121272433 "Mac使用docker时,卷默认挂载路径/var/lib/docker/volumes不存在问题")
# Mac使用docker时,卷默认挂载路径/var/lib/docker/volumes不存在问题
### 卷默认挂载路径
**当使用匿名挂载或者具名挂载时,卷会被挂载到默认的/var/lib/docker/volumes路径下。**
1. 以查看一个具名挂载为例,使用 **“docker volume inspect 卷名”** ,查看该卷的详细信息。
yc@localhost ~ % docker volume inspect juming
[
{
"CreatedAt": "2021-11-11T07:24:22Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming/_data",
"Name": "juming",
"Options": null,
"Scope": "local"
}
]
![][1]
### Mac OS系统出现路径不存在问题
1. 在上述操作之后,发现挂载路径是 **“/var/lib/docker/volumes/juming/_data”**,但是在Mac终端进入这个路径时,发现它并不存在
yc@localhost ~ % cd /var/lib/docker/volumes
cd: no such file or directory: /var/lib/docker/volumes
2. 在网上看了很多教程,说是使用下面的命令后,var下的lib/docker等等路径就显示出来了
`screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty`
3. 但是我的 **/Library/Containers/com.docker.docker/Data/vms/0**目录下,并没有tty,所以显示了下面的 **screen is terminating**
yc@localhost ~ % screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
[screen is terminating]
### 解决办法
1. 在终端使用以下命令
`docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh`
2. 然后输入 **ls** 查看当前路径下目录信息
3. 然后 **cd /var/lib/docker/volumes**
4. 然后 **ls** 可发现此时我们的卷挂载都在这个目录下
![image.png](https://joyimg.cpolar.top/i/2025/08/03/688f55f04ecdc.png)
5. 想要退出的话,**exit** 就行
[1]: https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png ""
[2]: https://i-blog.csdnimg.cn/blog_migrate/c9781f0e9bb8747227fb65d7834fb827.png
@@ -0,0 +1,821 @@
---
created: 2025-08-30T11:45
updated: 2025-09-22T13:27
---
一、Docker是什么
-----------
**Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。** 它是目前最流行的 Linux 容器解决方案。
Docker 将应用程序与该程序的依赖,打包在一个image文件里面。
运行这个文件,就会生成一个虚拟容器。
程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。
![](https://i-blog.csdnimg.cn/blog_migrate/5527e927b7ccce1dfc6239a8b9bcca67.png)
1、**Docker 把应用程序及其依赖,打包在 image 文件里面。** 只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
2、image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。
image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。
3、为了方便共享,image 文件制作完成后,可以上传到网上的仓库。Docker 的官方仓库 [Docker Hub](https://hub.docker.com/ "Docker Hub") 是最重要、最常用的 image 仓库。此外,出售自己制作的 image 文件也是可以的。
有了 Docker,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
二、Docker 的用途
------------
Docker 的主要用途,目前有三大类。
**(1)提供一次性的环境。** 比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
**(2)提供弹性的云服务。** 因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
**(3)组建微服务架构。** 通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。
三、安装:
-----
### 下载地址:
[Empowering App Development for Developers | Docker](https://www.docker.com/ "Empowering App Development for Developers | Docker")
[Get Started with Docker | Docker](https://www.docker.com/get-started "Get Started with Docker | Docker")
[Install Docker Desktop on Mac | Docker Documentation](https://docs.docker.com/desktop/mac/install/ "Install Docker Desktop on Mac | Docker Documentation")
### 用户手册:
[Docker Desktop for Mac user manual | Docker Documentation](https://docs.docker.com/desktop/mac/ "Docker Desktop for Mac user manual | Docker Documentation")
Docker 是服务器----客户端架构。命令行运行`docker`命令的时候,需要本机有 Docker 服务。如果这项服务没有启动,可以用下面的命令启动
```null
$ sudo service docker start$ sudo systemctl start docker
```
四、配置镜像
------
### 4.1为什么要配置镜像:
因为docker服务器在国外,基于网速与“和谐墙”的问题,所以我们在国内操作国外镜像可能无法正常拉取,这需要我们为docker设置国内的阿里云镜像加速器。
### 4.2配置镜像
Preferences--Docker Engine
![](https://i-blog.csdnimg.cn/blog_migrate/215ec31b6f55d914d93ed053d17a31b1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4ab96c49ea2d073a6e5b79b1b5366150.png)
```null
"https://e29lwva9.mirror.aliyuncs.com"
```
然后重启一下
### 4.3查看是否配置成功
在终端输入
```null
docker info
```
查看结果
![](https://i-blog.csdnimg.cn/blog_migrate/998c377e7bc5eee577163c61515c8905.png)
 镜像配置成功
六、运行docker程序,实例:hello world
---------------------------
下面,我们通过最简单的 image 文件"[hello world"](https://hub.docker.com/r/library/hello-world/ "hello world""),感受一下 Docker。
需要说明的是,国内连接 Docker 的官方仓库很慢,还会断线,需要将默认仓库改成国内的镜像网站。
首先,运行下面的命令,将 image 文件从仓库抓取到本地。
```null
docker image pull library/hello-world
```
上面代码中,`docker image pull`是抓取 image 文件的命令。`library/hello-world`是 image 文件在仓库里面的位置,其中`library`是 image 文件所在的组,`hello-world`是 image 文件的名字。
由于 Docker 官方提供的 image 文件,都放在[library](https://hub.docker.com/r/library/ "library")组里面,所以它的是默认组,可以省略。因此,上面的命令可以写成下面这样。
```null
docker image pull hello-world
```
抓取成功以后,就可以在本机看到这个 image 文件了。
```null
docker images
```
现在,运行这个 image 文件。
```null
docker container run hello-world
```
`docker container run`命令会从 image 文件,生成一个正在运行的容器实例。
**注意,`docker container run`命令具有自动抓取 image 文件的功能。**
**如果发现本地没有指定的 image 文件,就会从仓库自动抓取。**
因此,前面的`docker image pull`命令并不是必需的步骤。
如果运行成功,你会在屏幕上读到下面的输出。
```null
a58@58deMacBook-Pro-2 ~ % docker container run hello-worldThis message shows that your installation appears to be working correctly.
```
输出这段提示以后,`hello world`就会停止运行,容器自动终止。
有些容器不会自动终止,因为提供的是服务。比如,安装运行 Ubuntu 的 image,就可以在命令行体验 Ubuntu 系统。
> ```null
> $ docker container run -it ubuntu bash
> ```
对于那些不会自动终止的容器,必须使用[docker container kill](https://docs.docker.com/engine/reference/commandline/container_kill/ "docker container kill") 命令手动终止。
> ```null
> $ docker container kill [containID]
> ```
### 6.2 第一次运行命令 docker run ubuntu echo hello world
```null
a58@58deMacBook-Pro-2 ~ % docker run ubuntu echo hello worldUnable to find image 'ubuntu:latest' locallydocker: Error response from daemon: pull access denied for cs, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
```
运行失败,原因:
docker在运行一个容器之前,会先看本地是否有容器需要的image,如果没有的话会去远端下载。
运行完成之后,会在本地生成一个名为ubuntu的imge
![](https://i-blog.csdnimg.cn/blog_migrate/a608547e184a5232cfb75263900ed773.png)
我们再次执行
```null
a58@58deMacBook-Pro-2 ~ % docker run ubuntu echo hello world
```
在 ubuntu这个image里,运行了echo hello world 这个命令,输出了hello world 
### 查看本地所有的images
docker images
```null
a58@58deMacBook-Pro-2 ~ % docker imagesREPOSITORY               TAG       IMAGE ID       CREATED        SIZEdocker/getting-started   latest    adfdb308d623   3 weeks ago    27.4MBubuntu                   latest    d5ca7a445605   4 months ago   65.6MBhello-world              latest    18e5af790473   5 months ago   9.14kB
```
七、容器文件
------
**image 文件生成的容器实例,本身也是一个文件,称为容器文件。** 也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
```null
$ docker container ls --all
```
上面命令的输出结果之中,包括容器的 ID (containerID)。很多地方都需要提供这个 ID,比如上一节终止容器运行的`docker container kill`命令。
终止运行的容器文件,依然会占据硬盘空间,可以使用[docker container rm](https://docs.docker.com/engine/reference/commandline/container_rm/ "docker container rm")命令删除。
```null
docker container rm [containerID]
```
运行上面的命令之后,再使用`docker container ls --all`命令,就会发现被删除的容器文件已经消失了。
### **7.2容器与image的关系**
**image id 是固定不变的。根据同一个image生成的不同容器,容器id containerID 是不同的**
八、 docker启动nginx容器
------------------
```null
a58@58deMacBook-Pro-2 ~ % docker run nginxUnable to find image 'nginx:latest' locally
```
docker run nginx ,执行失败。
docker在运行一个容器之前,会先看本地是否有容器需要的image,如果没有的话会去远端下载。
再次运行:
```null
a58@58deMacBook-Pro-2 ~ % docker run -p 8080:80 -d nginx612195861a8cd79ed5202c7eab581a86f78d0284672ab0662450236bebfbf696
```
运行成功
命令解释:
```null
-p 8080:80 端口映射,将image的80端口,映射到本地8080端口
```
**docker ps 查看我们刚刚启动docker容器的信息**
```null
a58@58deMacBook-Pro-2 ~ % docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES612195861a8c nginx "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp interesting_allen
```
**容器的id**
CONTAINER ID 612195861a8c 
**端口映射关系**
PORTS: 0.0.0.0:8080->80/tcp
我们在浏览器访问地址:
```null
http://localhost:8080/
```
![](https://i-blog.csdnimg.cn/blog_migrate/f379a2eeaa6b13d23b5334a48a3360ac.png)
 我们在当前浏览器启动了一个nginx
3.3 我们在本地创建一个index.html文件
index.html
将index.htm复制到ningx容器中
```null
docker cp index.html 612195861a8c://usr/share/nginx/html
```
612195861a8c 为容器的id。
我们再次访问
```null
http://localhost:8080/
```
![](https://i-blog.csdnimg.cn/blog_migrate/e7ab19bae157ff724314a25b7fea6694.png)
现在访问的就是我们刚刚复制过去的index.htm文件
**停止docker容器**
**docker stop +容器id**
```null
a58@58deMacBook-Pro-2 ~ % docker stop 612195861a8c
```
停止docker容器后,再次访问[ http://localhost:8080/](http://localhost:8080/ " http://localhost:8080/")
显示无法访问此网站
再次启动容器  docker run -p 8080:80 -d nginx
```null
a58@58deMacBook-Pro-2 ~ % docker run -p 8080:80 -d nginxb77bac0b212baaa7e33564ea623b09be58b06838a6fda4cf0612c397eaa11dad
```
查看详细信息 docker ps
```null
a58@58deMacBook-Pro-2 ~ % docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb77bac0b212b nginx "/docker-entrypoint.…" 12 seconds ago Up 10 seconds 0.0.0.0:8080->80/tcp strange_mcnulty
```
发现,容器的id变了。
![](https://i-blog.csdnimg.cn/blog_migrate/622cd2db10f66629692b957393645be6.png)
此时访问的地址,展示的是nginx缺省的页面,而不是刚刚我们复制的index.htm页面。
这是因为在容器的改动,都是暂时的,不会被保存。
九、如何保存容器内的改动?
-------------
我们再次把index.html,复制到刚刚的容器中
```null
docker cp index.html 384c7a8e8028://usr/share/nginx/html
```
384c7a8e8028是容器id
访问:
[http://localhost:8080/](http://localhost:8080/ "http://localhost:8080/")
### **9.1 使用commit命令来保存**
```null
docker commit -m '增加index' 384c7a8e8028
```
最后面的384c7a8e8028是容器的id
```null
a58@58deMacBook-Pro-2 ~ % docker commit -m '增加index' 384c7a8e8028sha256:14a1e785e7c14821e051c1939b2caeee8bc450a7e710ec959dd1ea085c1bc6c7
```
使用commit提交改动后,会产生一个新的image id。
查看所有的images
```null
docker images
```
![](https://i-blog.csdnimg.cn/blog_migrate/81c40321bfc1ffdc05dee22d7a233cc7.png)
 此时新增了一个image,但是 名字和TAG都是为空(因为我们刚刚commit的时候没有加名字)
再次重复执行一下刚刚的操作
```null
docker cp index.html 384c7a8e8028://usr/share/nginx/html
```
nginx-fun 是我们给的名字
```null
docker commit -m '增加index' 384c7a8e8028 nginx-fun
```
再次查看所有的image
```null
docker images
```
![](https://i-blog.csdnimg.cn/blog_migrate/51127fbeebd7c5a82f6682d2b5aedd90.png)
### 9.2 删除image
删除名称为none的image
```null
docker rmi 14a1e785e7c1
```
rmi: remove image 的缩写
14a1e785e7c1 要被删除的image的id
![](https://i-blog.csdnimg.cn/blog_migrate/2c430c6896727b64fe19a6bf4c332e4a.png)
### 9.3 删除容器 
查看正在运行的docker 容器
```null
docker ps
```
停止正在运行的docker容器
```null
docker stop 384c7a8e8028
```
 384c7a8e8028容器id  CONTAINER ID
查看docker所有的容器(运行中的+历史的)
```null
docker ps -a
```
删除
删除2个 
```null
docker rm 3a485ba7386e cb77a4f75e2e
```
再次查看所有
```null
docker ps -a
```
被删除的不在了
十、docker命令总结
------------
| 命令 | 用途 |
| docker pull | 远程拉取image |
| docker build | 创建image |
| docker images | 列出本地所有的image |
| docker run | 运行容器container |
| docker ps | 列出当前运行的容器container |
| docker rm | 删除已经结束的容器container |
| docker cp | 在本地和容器之间拷贝文件 |
| docker commit | 保存改动生成新的image |
| docker rmi | 删除image |
十一、Dockerfile 文件,自创镜像
---------------------
学会使用 image 文件以后,接下来的问题就是,如何可以生成 image 文件?如果你要推广自己的软件,势必要自己制作 image 文件。
这就需要用到 Dockerfile 文件。它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。
下面通过一个实例,演示如何编写 Dockerfile 文件。
准备一个Dockerfile 文件,文件内容如下(只有三行):
内容解释:
FROM alpine:latest   我们创造的新镜像依赖的基础镜像
MAINTAINER cs   没有特殊的功能,就是标注作者是cs
CMD echo 'hello docker'   运行一个命令 
创建一个目录 d1
创建Dockerfile文件
```null
touch Dockerfile
```
这里文件名称,约定成俗的是Dockerfile,也可以用其他名字,但是不建议
编辑文件:
```null
vim Dockerfile
```
### 11.1用docker命令构建新的image
```null
docker build -t hello_docker .
```
命令解释:
\-t 打标签,标签名称为hell\_docker
.  点是路径名,将路径内所有的文件都打包进image
构建成功后,查看我们刚刚创建的image
```null
docker images hello_docker
```
![](https://i-blog.csdnimg.cn/blog_migrate/2295528f994daf5b4c3f4e8117610864.png)
运行我们的image 
```null
docker run hello_docker
```
### 11.2 第二个Dockerfile
Dockerfile 文件内容:
```null
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.listRUN apt-get install -y nginxCOPY index.html /var/www/htmlENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
```
FROM ubuntu        基础镜像ubuntu
MAINTAINER cs   创作者
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
使用国内镜像,快一点
RUN apt-get update  更新ubuntu的程序库
RUN apt-get install -y nginx  安装nginx
COPY index.html /var/www/html  拷贝本地index.htm文件到容器 /var/www/html 路径下 
ENTRYPOINT \["/usr/sbin/nginx","-g","daemon off;"\]  给出一个容器的入口,将nginx作为一个前台程序进行
EXPOSE 80 端口号
```null
```
创建index.html
```null
在dockerfiler2目录下,创建index.html文件
```
index.html随便输入一个行内容  大家好 
开始构建
```null
docker build -t cs/hello-nginx .
```
运行刚刚创建的image
```null
docker run -d -p 83:80 cs/hello-nginx
```
\-d 作为守护进程
\-p 83:80 映射到本地83端口
访问一下刚刚的容器
```null
a58@58deMacBook-Pro-2 dockerfiler2 % curl http://localhost:83
```
### 11.3Dockerfile语法
| 命令 | 用途 |
| FROM | base image |
| RUN | 在容器内执行命令 |
| ADD | 往容器内添加文件(可以添加远程文件) |
| COPY | 往容器内拷贝文件 |
| CMD | 给容器添加一个执行入口 |
| EXPOSE | 暴露端口 |
| WORKDIR | 指定运行命令的路径 |
| MAINTAINER | 维护者 |
| ENV | 给容器里面环境设定变量 |
| ENTRYOINIT | 设定容器入口 |
| USER | 指定执行该命令的用户 |
| VOLUME | |
十二、实例:制作自己的 Docker 容器
---------------------
下面我以 [koa-demos](https://www.ruanyifeng.com/blog/2017/08/koa.html "koa-demos") 项目为例,介绍怎么写 Dockerfile 文件,实现让用户在 Docker 容器里面运行 Koa 框架。
作为准备工作,请先[下载源码](https://github.com/ruanyf/koa-demos/archive/master.zip "下载源码")。
```null
git clone https://github.com/ruanyf/koa-demos.git
```
### 12.1 编写 Dockerfile 文件
首先,在项目的根目录下,新建一个文本文件`.dockerignore`,写入下面的[内容](https://github.com/ruanyf/koa-demos/blob/master/.dockerignore "内容")。
上面代码表示,这三个路径要排除,不要打包进入 image 文件。如果你没有路径要排除,这个文件可以不新建。
然后,在项目的根目录下,新建一个文本文件 Dockerfile,写入下面的[内容](https://github.com/ruanyf/koa-demos/blob/master/Dockerfile "内容")。
```null
RUN npm install --registry=https://registry.npm.taobao.org
```
上面代码一共五行,含义如下。
```null
FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。WORKDIR /app:指定接下来的工作路径为/app。RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。
```
#### 12.2 创建 image 文件
有了 Dockerfile 文件以后,就可以使用`docker image build`命令创建 image 文件了
> ```null
> $ docker image build -t koa-demo .$ docker image build -t koa-demo:0.0.1 .
> ```
![](https://i-blog.csdnimg.cn/blog_migrate/78b5881ccf071bceeb7ff175172fe3ae.png)
上面代码中,`-t`参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是`latest`。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。
如果运行成功,就可以看到新生成的 image 文件`koa-demo`了。
```null
docker images
```
```null
a58@58deMacBook-Pro-2 koa-demos % docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEkoa-demo latest 1dc92a9cbdb2 13 seconds ago 676MBdocker/getting-started latest adfdb308d623 3 weeks ago 27.4MB
```
### 12.3 生成容器
`docker container run`命令会从 image 文件生成容器。
> ```null
> $ docker container run -p 8000:3000 -it koa-demo /bin/bash$ docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
> ```
上面命令的各个参数含义如下:
* `-p`参数:容器的 3000 端口映射到本机的 8000 端口。
* `-it`参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。
* `koa-demo:0.0.1`:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。
* `/bin/bash`:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell。
如果一切正常,运行上面的命令以后,就会返回一个命令行提示符。
这表示你已经在容器里面了,返回的提示符就是容器内部的 Shell 提示符。执行下面的命令。
> ```null
> root@66d80f4aaf1e:/app# node demos/01.js
> ```
这时,Koa 框架已经运行起来了。打开本机的浏览器,访问 http://127.0.0.1:8000,网页显示"Not Found",这是因为这个 [demo](https://github.com/ruanyf/koa-demos/blob/master/demos/01.js "demo") 没有写路由。
这个例子中,Node 进程运行在 Docker 容器的虚拟环境里面,进程接触到的文件系统和网络接口都是虚拟的,与本机的文件系统和网络接口是隔离的,因此需要定义容器与物理机的端口映射(map)。
现在,在容器的命令行,按下 Ctrl + c 停止 Node 进程,然后按下 Ctrl + d (或者输入 exit)退出容器。此外,也可以用`docker container kill`终止容器运行。
> ```null
> $ docker container kill [containerID]
> ```
容器停止运行之后,并不会消失,用下面的命令删除容器文件。
> ```null
> $ docker container ls --all$ docker container rm [containerID]
> ```
也可以使用`docker container run`命令的`--rm`参数,在容器终止运行后自动删除容器文件。
> ```null
> $ docker container run --rm -p 8000:3000 -it koa-demo /bin/bash
> ```
#### 12.4 CMD 命令
上一节的例子里面,容器启动以后,需要手动输入命令`node demos/01.js`。我们可以把这个命令写在 Dockerfile 里面,这样容器启动以后,这个命令就已经执行了,不用再手动输入了。
> ```null
> RUN npm install --registry=https://registry.npm.taobao.org
> ```
上面的 Dockerfile 里面,多了最后一行`CMD node demos/01.js`,它表示容器启动后自动执行`node demos/01.js`
你可能会问,`RUN`命令与`CMD`命令的区别在哪里?简单说,`RUN`命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;`CMD`命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个`RUN`命令,但是只能有一个`CMD`命令。
注意,指定了`CMD`命令以后,`docker container run`命令就不能附加命令了(比如前面的`/bin/bash`),否则它会覆盖`CMD`命令。现在,启动容器可以使用下面的命令。
> ```null
> $ docker container run --rm -p 8000:3000 -it koa-demo:0.0.1
> ```
#### 12.5 发布 image 文件
容器运行成功后,就确认了 image 文件的有效性。这时,我们就可以考虑把 image 文件分享到网上,让其他人使用。
首先,去 [hub.docker.com](https://hub.docker.com/ "hub.docker.com") 或 [cloud.docker.com](https://cloud.docker.com/ "cloud.docker.com") 注册一个账户。然后,用下面的命令登录。
接着,为本地的 image 标注用户名和版本。
> ```null
> $ docker image tag [imageName] [username]/[repository]:[tag]$ docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1
> ```
也可以不标注用户名,重新构建一下 image 文件。
> ```null
> $ docker image build -t [username]/[repository]:[tag] .
> ```
最后,发布 image 文件。
> ```null
> $ docker image push [username]/[repository]:[tag]
> ```
发布成功以后,登录 hub.docker.com,就可以看到已经发布的 image 文件。
十四、其他有用的命令
----------
docker 的主要用法就是上面这些,此外还有几个命令,也非常有用。
**1docker container start**
前面的`docker container run`命令是新建容器,每运行一次,就会新建一个容器。同样的命令运行两次,就会生成两个一模一样的容器文件。如果希望重复使用容器,就要使用`docker container start`命令,它用来启动已经生成、已经停止运行的容器文件。
> ```null
> $ docker container start [containerID]
> ```
**2docker container stop**
前面的`docker container kill`命令终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号。而`docker container stop`命令也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号。
> ```null
> $ docker container stop [containerID]
> ```
这两个信号的差别是,应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失。
**3docker container logs**
`docker container logs`命令用来查看 docker 容器的输出,即容器里面 Shell 的标准输出。如果`docker run`命令运行容器的时候,没有使用`-it`参数,就要用这个命令查看输出。
> ```null
> $ docker container logs [containerID]
> ```
**4docker container exec**
`docker container exec`命令用于进入一个正在运行的 docker 容器。如果`docker run`命令运行容器的时候,没有使用`-it`参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了。
> ```null
> $ docker container exec -it [containerID] /bin/bash
> ```
**5docker container cp**
`docker container cp`命令用于从正在运行的 Docker 容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法。
> ```null
> $ docker container cp [containID]:[/path/to/file] .
> ```
十五、镜像分层
-------
镜像是分层被存储的,而不是作为整个文件被存储的。
Dockerfile中的每一行都产生一个新增
![](https://i-blog.csdnimg.cn/blog_migrate/1ec885b7a5b3097a004c038acb642384.png)
已经存在image里面的层,是只读的
![](https://i-blog.csdnimg.cn/blog_migrate/f70bcd3e3417c701e66fba00cde8d8c1.png)
当image被容器运行,会产生一个新层 容器层container layer ,这一层是可读可写的。 
**分层的好处:**
A image 有10层,B image有7层,其中5层是共享的,节省了空间。
十六、Volume  docker的存储技术
----------------------
提供**独立**于容器之外的**持久化**存储
在容器中的改动,是不会被保存的。Volume提供了一个比较方便的,持久化的。
比如运行一个数据库容器的操作,数据库的数据应该是被持久化的。Volume就可以做这些,并且可以提供给容器之间的共享数据。
### 16.1 Volume
Volume
方式一  通过-v命令
```null
docker run -d --name nginx -v /usr/share/nginx/html nginx
```
\--name nginx 给他命名为nginx
查看容器的所有信息
```null
docker inspect nginx
```
![](https://i-blog.csdnimg.cn/blog_migrate/62b9176c94ec43843e514de704afbee9.png)
宿主机的这个路径 "Source": "/var/lib/....挂载到了 容器的内部这个地址/usr/share/nginx/html
在终端查看 “/var/lib/docker/volumes/7597264b02449c89e469f00198fa48a803883a7c6cf403c97e005a5d747c3326/\_data 这个地址
```null
ls /var/lib/docker/volumes/7597264b02449c89e469f00198fa48a803883a7c6cf403c97e005a5d747c3326/_data
```
提示No such file or directory
参考博客:
[mac docker配置镜像的方式\_峰会路转的博客-CSDN博客\_docker mac 设置镜像](https://blog.csdn.net/qq_27702739/article/details/107707689 "mac docker配置镜像的方式_峰会路转的博客-CSDN博客_docker mac 设置镜像")
 [Mac 下如何切换 Docker 容器镜像?(更改阿里镜像)\_hedeqiang-CSDN博客](https://blog.csdn.net/hedeqiang9436/article/details/106498597 "Mac 下如何切换 Docker 容器镜像?(更改阿里镜像)_hedeqiang-CSDN博客")
[Docker 入门教程 - 阮一峰的网络日志](https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html "Docker 入门教程 - 阮一峰的网络日志")
@@ -0,0 +1,85 @@
---
created: 2025-08-30T11:45
updated: 2025-09-22T13:27
---
![](https://i-blog.csdnimg.cn/blog_migrate/8f55be87d59c94e29047965f29b62932.gif#pic_center)
曾梦想执剑走天涯,我是程序猿【AK】
`提示:添加投票!!!`
简述概要
----
如何在Docker中,修改已经挂载的卷(Volume)
知识图谱
----
在Docker中,修改已经挂载的卷(Volume)的挂载路径通常涉及到两个主要步骤:停止容器和修改容器的配置。以下是详细的过程:
1. **停止容器**
* 使用 `docker stop` 命令停止你想要修改挂载路径的容器。例如:
```bash
docker stop <container_name_or_id>
```
2. **修改容器配置**
* Docker容器的配置文件位于 `/var/lib/docker/containers/<container_id>/` 目录下。你需要找到对应的容器ID,然后进入该目录。
* 在容器的目录下,你会找到 `config.v2.json` 和 `hostconfig.json` 文件。这两个文件包含了容器的配置信息,包括挂载卷的信息。
* 你需要编辑 `hostconfig.json` 文件,找到 `"Binds"` 或 `"Mounts"` 部分(取决于Docker版本),然后修改挂载路径。例如,将 `"/old/path:/container/path"` 改为 `"/new/path:/container/path"`。
* 确保在编辑文件时保持JSON格式的正确性。
3. **重启容器**
* 修改配置文件后,重启容器以应用新的挂载路径。使用 `docker start` 命令启动容器:
```bash
docker start <container_name_or_id>
```
4. **验证挂载路径**
* 使用 `docker inspect` 命令来验证挂载路径是否已经更新:
```bash
docker inspect <container_name_or_id>
```
* 查看输出中的 `"Mounts"` 部分,确认挂载路径已经更改。
请注意,直接修改Docker容器的配置文件并不是官方推荐的做法,因为这可能会导致数据丢失或其他问题。更安全的方法是在创建容器时就指定正确的挂载路径。如果你需要更改挂载路径,最好是创建一个新的容器,并在创建时指定新的路径。
在某些情况下,如果你只是想更改Docker的默认存储路径(例如,将所有容器和镜像的存储路径从 `/var/lib/docker` 更改到其他位置),你可以在Docker的配置文件中设置 `graph` 选项,或者在Docker的守护进程配置文件中设置 `--graph` 参数。这通常在 `/etc/docker/daemon.json` 文件中设置,或者在 `/etc/docker/docker.conf` 文件中(取决于你的Docker版本和操作系统)。例如:
```json
{
"graph": "/path/to/new/directory"
}
```
在修改配置文件后,你需要重启Docker服务以使更改生效。在Linux上,你可以使用以下命令:
```bash
sudo systemctl restart docker
```
或者在某些系统中,你可能需要使用 `service` 命令:
```bash
sudo service docker restart
```
请确保在进行这些更改之前备份你的数据,以防万一出现问题。
![](https://i-blog.csdnimg.cn/blog_migrate/8223d289c0b9c7746b913b1538a271b7.jpeg#pic_center)
+29
View File
@@ -0,0 +1,29 @@
- Gis
软件:google earth pro、gpxSee、QGIS、ArcGIS
OB插件:chinese map view/map-view、leaflet
https://www.lddgo.net/convert/position
https://www.mapchaxun.cn/Regeo/
https://jingweidu.bmcx.com/
https://qgis.org/
https://zhuanlan.zhihu.com/p/265023839
https://github.com/tmcw/awesome-geojson
教程:
https://zhuanlan.zhihu.com/p/1956993404236969144
https://www.bilibili.com/opus/1035446259233587200
gpxSee可以打开geojson文件
含map-view插件的md文件转换html后,插件显示错误!
考虑:将md文件转换成html,其中的geo等插件能正常运行!
geojson与gpx可以相互转换
https://products.groupdocs.app/zh/conversion/geojson-to-gpx
https://glandnav.com/zh/tools/geojson-to-gpx
+64
View File
@@ -0,0 +1,64 @@
## [群晖 sudo 免密码配置](https://blog.csdn.net/e891377/article/details/132848703)
https://blog.csdn.net/e891377/article/details/132848703
https://www.cnblogs.com/ourener/p/19067474
在群晖 NAS 上配置 **sudo 免密码**,可以避免每次执行需要管理员权限的命令时输入密码,从而提升运维效率。以下步骤基于 SSH 登录和 _sudoers_ 配置完成。
步骤 1:开启 SSH 并获取 root 权限
- 登录群晖 **控制面板 → 终端机和 SNMP**,勾选 **启动 SSH 功能**
- 使用 SSH 工具(如 FinalShell、PuTTY)连接群晖:
ssh 用户名@群晖IP
![复制](data:image/svg+xml,%EF%BB%BF%3Csvg%20width%3D%2218%22%20height%3D%2219%22%20viewBox%3D%220%200%2018%2019%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%20%20%20%20%3Cpath%20d%3D%22M4.11363%203.54174L4.11153%205.16645V13.2054C4.11153%2014.579%205.19925%2015.6926%206.54102%2015.6926L12.982%2015.6929C12.751%2016.3615%2012.1281%2016.8406%2011.3958%2016.8406H6.54102C4.57998%2016.8406%202.99023%2015.2131%202.99023%2013.2054V5.16645C2.99023%204.41591%203.45927%203.77752%204.11363%203.54174ZM13.2688%201.53125C14.1977%201.53125%2014.9508%202.30219%2014.9508%203.25319V13.2022C14.9508%2014.1531%2014.1977%2014.9241%2013.2688%2014.9241H6.54102C5.6121%2014.9241%204.85907%2014.1531%204.85907%2013.2022V3.25319C4.85907%202.30219%205.6121%201.53125%206.54102%201.53125H13.2688ZM13.2688%202.67921H6.54102C6.23138%202.67921%205.98037%202.93619%205.98037%203.25319V13.2022C5.98037%2013.5192%206.23138%2013.7761%206.54102%2013.7761H13.2688C13.5784%2013.7761%2013.8295%2013.5192%2013.8295%2013.2022V3.25319C13.8295%202.93619%2013.5784%202.67921%2013.2688%202.67921Z%22%20fill%3D%22%23767676%22%20%2F%3E%0D%0A%3C%2Fsvg%3E)
- 切换到 root
sudo -i
![复制](data:image/svg+xml,%EF%BB%BF%3Csvg%20width%3D%2218%22%20height%3D%2219%22%20viewBox%3D%220%200%2018%2019%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%20%20%20%20%3Cpath%20d%3D%22M4.11363%203.54174L4.11153%205.16645V13.2054C4.11153%2014.579%205.19925%2015.6926%206.54102%2015.6926L12.982%2015.6929C12.751%2016.3615%2012.1281%2016.8406%2011.3958%2016.8406H6.54102C4.57998%2016.8406%202.99023%2015.2131%202.99023%2013.2054V5.16645C2.99023%204.41591%203.45927%203.77752%204.11363%203.54174ZM13.2688%201.53125C14.1977%201.53125%2014.9508%202.30219%2014.9508%203.25319V13.2022C14.9508%2014.1531%2014.1977%2014.9241%2013.2688%2014.9241H6.54102C5.6121%2014.9241%204.85907%2014.1531%204.85907%2013.2022V3.25319C4.85907%202.30219%205.6121%201.53125%206.54102%201.53125H13.2688ZM13.2688%202.67921H6.54102C6.23138%202.67921%205.98037%202.93619%205.98037%203.25319V13.2022C5.98037%2013.5192%206.23138%2013.7761%206.54102%2013.7761H13.2688C13.5784%2013.7761%2013.8295%2013.5192%2013.8295%2013.2022V3.25319C13.8295%202.93619%2013.5784%202.67921%2013.2688%202.67921Z%22%20fill%3D%22%23767676%22%20%2F%3E%0D%0A%3C%2Fsvg%3E)
步骤 2:编辑 sudoers 文件
- 打开 _sudoers_ 配置:
visudo
![复制](data:image/svg+xml,%EF%BB%BF%3Csvg%20width%3D%2218%22%20height%3D%2219%22%20viewBox%3D%220%200%2018%2019%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%20%20%20%20%3Cpath%20d%3D%22M4.11363%203.54174L4.11153%205.16645V13.2054C4.11153%2014.579%205.19925%2015.6926%206.54102%2015.6926L12.982%2015.6929C12.751%2016.3615%2012.1281%2016.8406%2011.3958%2016.8406H6.54102C4.57998%2016.8406%202.99023%2015.2131%202.99023%2013.2054V5.16645C2.99023%204.41591%203.45927%203.77752%204.11363%203.54174ZM13.2688%201.53125C14.1977%201.53125%2014.9508%202.30219%2014.9508%203.25319V13.2022C14.9508%2014.1531%2014.1977%2014.9241%2013.2688%2014.9241H6.54102C5.6121%2014.9241%204.85907%2014.1531%204.85907%2013.2022V3.25319C4.85907%202.30219%205.6121%201.53125%206.54102%201.53125H13.2688ZM13.2688%202.67921H6.54102C6.23138%202.67921%205.98037%202.93619%205.98037%203.25319V13.2022C5.98037%2013.5192%206.23138%2013.7761%206.54102%2013.7761H13.2688C13.5784%2013.7761%2013.8295%2013.5192%2013.8295%2013.2022V3.25319C13.8295%202.93619%2013.5784%202.67921%2013.2688%202.67921Z%22%20fill%3D%22%23767676%22%20%2F%3E%0D%0A%3C%2Fsvg%3E)
- 在文件末尾添加:
用户名 ALL=(ALL) NOPASSWD: ALL
![复制](data:image/svg+xml,%EF%BB%BF%3Csvg%20width%3D%2218%22%20height%3D%2219%22%20viewBox%3D%220%200%2018%2019%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%20%20%20%20%3Cpath%20d%3D%22M4.11363%203.54174L4.11153%205.16645V13.2054C4.11153%2014.579%205.19925%2015.6926%206.54102%2015.6926L12.982%2015.6929C12.751%2016.3615%2012.1281%2016.8406%2011.3958%2016.8406H6.54102C4.57998%2016.8406%202.99023%2015.2131%202.99023%2013.2054V5.16645C2.99023%204.41591%203.45927%203.77752%204.11363%203.54174ZM13.2688%201.53125C14.1977%201.53125%2014.9508%202.30219%2014.9508%203.25319V13.2022C14.9508%2014.1531%2014.1977%2014.9241%2013.2688%2014.9241H6.54102C5.6121%2014.9241%204.85907%2014.1531%204.85907%2013.2022V3.25319C4.85907%202.30219%205.6121%201.53125%206.54102%201.53125H13.2688ZM13.2688%202.67921H6.54102C6.23138%202.67921%205.98037%202.93619%205.98037%203.25319V13.2022C5.98037%2013.5192%206.23138%2013.7761%206.54102%2013.7761H13.2688C13.5784%2013.7761%2013.8295%2013.5192%2013.8295%2013.2022V3.25319C13.8295%202.93619%2013.5784%202.67921%2013.2688%202.67921Z%22%20fill%3D%22%23767676%22%20%2F%3E%0D%0A%3C%2Fsvg%3E)
步骤 3:保存并退出
- 在 _visudo_ 中按 **ESC** → 输入 _:wq_ 保存退出。
步骤 4:验证免密码效果
执行:
sudo ls /root
![复制](data:image/svg+xml,%EF%BB%BF%3Csvg%20width%3D%2218%22%20height%3D%2219%22%20viewBox%3D%220%200%2018%2019%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%20%20%20%20%3Cpath%20d%3D%22M4.11363%203.54174L4.11153%205.16645V13.2054C4.11153%2014.579%205.19925%2015.6926%206.54102%2015.6926L12.982%2015.6929C12.751%2016.3615%2012.1281%2016.8406%2011.3958%2016.8406H6.54102C4.57998%2016.8406%202.99023%2015.2131%202.99023%2013.2054V5.16645C2.99023%204.41591%203.45927%203.77752%204.11363%203.54174ZM13.2688%201.53125C14.1977%201.53125%2014.9508%202.30219%2014.9508%203.25319V13.2022C14.9508%2014.1531%2014.1977%2014.9241%2013.2688%2014.9241H6.54102C5.6121%2014.9241%204.85907%2014.1531%204.85907%2013.2022V3.25319C4.85907%202.30219%205.6121%201.53125%206.54102%201.53125H13.2688ZM13.2688%202.67921H6.54102C6.23138%202.67921%205.98037%202.93619%205.98037%203.25319V13.2022C5.98037%2013.5192%206.23138%2013.7761%206.54102%2013.7761H13.2688C13.5784%2013.7761%2013.8295%2013.5192%2013.8295%2013.2022V3.25319C13.8295%202.93619%2013.5784%202.67921%2013.2688%202.67921Z%22%20fill%3D%22%23767676%22%20%2F%3E%0D%0A%3C%2Fsvg%3E)
如果不再提示输入密码,则配置成功。
💡 **最佳实践与注意事项**
- 建议结合 **SSH 公钥免密登录**,进一步减少输入密码的次数。
- 修改 _/etc/ssh/sshd_config_ 确保启用:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
![复制](data:image/svg+xml,%EF%BB%BF%3Csvg%20width%3D%2218%22%20height%3D%2219%22%20viewBox%3D%220%200%2018%2019%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%20%20%20%20%3Cpath%20d%3D%22M4.11363%203.54174L4.11153%205.16645V13.2054C4.11153%2014.579%205.19925%2015.6926%206.54102%2015.6926L12.982%2015.6929C12.751%2016.3615%2012.1281%2016.8406%2011.3958%2016.8406H6.54102C4.57998%2016.8406%202.99023%2015.2131%202.99023%2013.2054V5.16645C2.99023%204.41591%203.45927%203.77752%204.11363%203.54174ZM13.2688%201.53125C14.1977%201.53125%2014.9508%202.30219%2014.9508%203.25319V13.2022C14.9508%2014.1531%2014.1977%2014.9241%2013.2688%2014.9241H6.54102C5.6121%2014.9241%204.85907%2014.1531%204.85907%2013.2022V3.25319C4.85907%202.30219%205.6121%201.53125%206.54102%201.53125H13.2688ZM13.2688%202.67921H6.54102C6.23138%202.67921%205.98037%202.93619%205.98037%203.25319V13.2022C5.98037%2013.5192%206.23138%2013.7761%206.54102%2013.7761H13.2688C13.5784%2013.7761%2013.8295%2013.5192%2013.8295%2013.2022V3.25319C13.8295%202.93619%2013.5784%202.67921%2013.2688%202.67921Z%22%20fill%3D%22%23767676%22%20%2F%3E%0D%0A%3C%2Fsvg%3E)
- 权限必须正确,否则免密无效:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
![复制](data:image/svg+xml,%EF%BB%BF%3Csvg%20width%3D%2218%22%20height%3D%2219%22%20viewBox%3D%220%200%2018%2019%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%20%20%20%20%3Cpath%20d%3D%22M4.11363%203.54174L4.11153%205.16645V13.2054C4.11153%2014.579%205.19925%2015.6926%206.54102%2015.6926L12.982%2015.6929C12.751%2016.3615%2012.1281%2016.8406%2011.3958%2016.8406H6.54102C4.57998%2016.8406%202.99023%2015.2131%202.99023%2013.2054V5.16645C2.99023%204.41591%203.45927%203.77752%204.11363%203.54174ZM13.2688%201.53125C14.1977%201.53125%2014.9508%202.30219%2014.9508%203.25319V13.2022C14.9508%2014.1531%2014.1977%2014.9241%2013.2688%2014.9241H6.54102C5.6121%2014.9241%204.85907%2014.1531%204.85907%2013.2022V3.25319C4.85907%202.30219%205.6121%201.53125%206.54102%201.53125H13.2688ZM13.2688%202.67921H6.54102C6.23138%202.67921%205.98037%202.93619%205.98037%203.25319V13.2022C5.98037%2013.5192%206.23138%2013.7761%206.54102%2013.7761H13.2688C13.5784%2013.7761%2013.8295%2013.5192%2013.8295%2013.2022V3.25319C13.8295%202.93619%2013.5784%202.67921%2013.2688%202.67921Z%22%20fill%3D%22%23767676%22%20%2F%3E%0D%0A%3C%2Fsvg%3E)
- 出于安全考虑,仅对可信用户开启 _NOPASSWD_,并限制外网访问 SSH。
这样配置后,你在群晖上执行 _sudo_ 命令将无需输入密码,同时配合 SSH 公钥可实现全程免密管理。
验证:
使用某个用户登录后输入:
sudo -n true
没有提示就成功了,是:sudo: a password is required 没有成功
https://zhuanlan.zhihu.com/p/632737024
+80
View File
@@ -0,0 +1,80 @@
---
created: 2025-07-15T07:20
updated: 2025-08-30T11:45
---
## 1. Self-hosted LiveSync
- 参考文档
官网 https://github.com/vrtmrz/obsidian-livesync/blob/main/README_cn.md
## 2.Translaste
不支持自我搭建的API对接
## 3. Memos-AI-Sync
通过Ollama可以调用DeepSeek模型
## 4.we-mp-rss
## 5. Clipper
## 6. Readwise
http://himan.picp.net:8001
admin/Mayi19b8
暂未调试WebHook
## 7.mermaid
- 甘特图
https://github.com/huterguier/obsidian-mehrmaid
https://github.com/dartungar/obsidian-mermaid
## 8.时间轴
https://github.com/seanlowe/obsidian-timelines
https://github.com/George-debug/obsidian-timeline/tree/master/src/style/snippet
https://post.smzdm.com/p/a0xerdd8/
https://github.com/Shanshuimei/obsidian-generate-timeline?tab=readme-ov-file
https://kivgf4fnsy5.feishu.cn/docx/NDLBd4lpUoI9gCxFuT1clsD7nmG
## 9. obsidian-md发布工具
https://github.com/frontend-engineering/Invio
https://ababtools.com/?post=1569
https://github.com/songxingguo/obsidian-note-publish
https://zhuanlan.zhihu.com/p/1910670352276763440
https://notes.oldwinter.top/obsidian-%E7%9B%AE%E5%89%8D%E6%9C%80%E5%AE%8C%E7%BE%8E%E7%9A%84%E5%85%8D%E8%B4%B9%E5%8F%91%E5%B8%83%E6%96%B9%E6%A1%88-%E6%B8%90%E8%BF%9B%E5%BC%8F%E6%95%99%E7%A8%8B
Note.sx netlify 飞书 语雀 mp 数字花园
share note
noteshare
note to mp
md2quartz.pro
https://www.md2wechat.cn/
10.计算器
<font color="#00b050">Meld Calc</font>
Numerals
<font color="#00b050">Calculite</font>
https://github.com/5anthosh/fcal
# 10. OB学习资源
https://zhuanlan.zhihu.com/p/619960525
# 11.思维导图
mindmap/enhancing mindmap/smm mindmap/mxmind/mindmap nextgen/lovely mindmap(配合白板)
目前只打开了enhancing mindmap+smm mindmap
https://www.bilibili.com/video/BV1e4421D7Ec/?vd_source=5b569287589b7d792efbc98bede5d260
# 参考链接
https://garden.oldwinter.top/%F0%9F%8D%80-%E8%8A%B1%E5%9B%AD%E5%AF%BC%E8%A7%88/%F0%9F%A7%B0-%E6%9C%AC%E5%BA%93%E6%8C%87%E5%8D%97/obsidian/obsidian%E7%9B%B8%E5%85%B3%E7%AC%94%E8%AE%B0/%E5%86%99%E7%BB%99%E5%A4%A7%E5%AE%B6%E7%9A%842025-obsidian%E6%8F%92%E4%BB%B6%E6%8E%A8%E8%8D%90%E6%8C%87%E5%8D%97
https://zhuanlan.zhihu.com/p/1914284536906363586
+240
View File
@@ -0,0 +1,240 @@
---
created: 2025-08-31T10:26
updated: 2025-08-31T10:47
---
以下是 **OnlyOffice Docs** 的 Docker 安装教程(社区版),支持文档在线编辑和协作:
---
### **1. 环境准备**
- **系统要求**Linux/Windows/macOS(推荐 Linux
- **Docker**:已安装 [Docker Engine](https://docs.docker.com/engine/install/) 和 [Docker Compose](https://docs.docker.com/compose/install/)
- **端口开放**:确保 `80``443`(或自定义端口)未被占用
---
### **2. 快速安装(单容器)**
#### **命令部署**
```bash
docker run -i -t -d -p 8080:80 --restart=always \
-e JWT_ENABLED=false \ # 禁用JWT验证(测试用)
-e JWT_SECRET=mysecretkey \ # 自定义JWT密钥(生产环境必设)
--name onlyoffice-docs \
onlyoffice/documentserver
```
> **参数说明**
> - `-p 8080:80`:将容器80端口映射到主机8080
> - `JWT_ENABLED=false`:关闭API验证(仅测试环境使用)
> - `JWT_SECRET`:生产环境必须设置复杂密钥
---
### **3. 生产环境推荐(Docker Compose**
创建 `docker-compose.yml` 文件:
```yaml
version: '3'
services:
onlyoffice:
image: onlyoffice/documentserver
container_name: onlyoffice
restart: always
ports:
- "443:443"
volumes:
- ./onlyoffice/data:/var/www/onlyoffice/Data # 数据持久化
- ./onlyoffice/logs:/var/log/onlyoffice # 日志持久化
environment:
- JWT_SECRET=your_strong_password_here
```
启动服务:
```bash
docker-compose up -d
```
---
### **4. 验证安装**
1. 访问 `http://服务器IP:8080`(或HTTPS端口)
2. 出现 **"ONLYOFFICE Docs is running"** 即成功
3. 测试文档编辑:点击页面中的 **"Create New"** 按钮
---
### **5. 配置Nginx反向代理(可选)**
```nginx
server {
listen 80;
server_name office.yourdomain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
> 建议配置HTTPS证书(Let's Encrypt
---
### **6. 常见问题**
| 问题 | 解决方案 |
|------|----------|
| 启动失败 | 检查端口冲突:`netstat -tulnp \| grep 8080` |
| 文档无法保存 | 确保 `/var/www/onlyoffice/Data` 目录有写入权限 |
| 连接超时 | 防火墙放行端口:`sudo ufw allow 8080` |
---
### **7. 集成到Nextcloud/OwnCloud**
在Nextcloud设置中:
1. 安装 **"ONLYOFFICE"** 插件
2. 填写地址:`http://your-office-server:8080`
3. 输入 `JWT_SECRET`(需与Docker环境变量一致)
---
### **8. 升级/卸载**
- **升级**`docker pull onlyoffice/documentserver` 后重启容器
- **卸载**`docker rm -f onlyoffice-docs` + 删除挂载卷
---
如果需要更详细的配置(如MySQL存储、集群部署),可以参考官方文档:
[ONLYOFFICE Docker Documentation](https://helpcenter.onlyoffice.com/installation/docs-community-install-docker.aspx)
建议将配置保存为笔记:
```markdown
# [[OnlyOffice部署记录]]
- 安装时间:<% tp.date.now("YYYY-MM-DD") %>
- 访问地址:http://your-server-ip:8080
- JWT密钥:||加密存储||
```
【第二次结果】
以下是 **ONLYOFFICE Docs Docker 安装教程**(最新社区版),包含常见问题解决方案:
---
### **1. 基础安装**
#### 最低系统要求
- 2核CPU / 4GB内存 / 20GB硬盘
- Docker Engine 20.10+ 和 Docker Compose
#### 快速启动命令
```bash
docker run -i -t -d -p 8080:80 --restart=always \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
--name onlyoffice-docs \
onlyoffice/documentserver:7.4
```
---
### **2. 生产环境配置**
#### docker-compose.yml 示例
```yaml
version: '3'
services:
onlyoffice:
image: onlyoffice/documentserver:7.4
container_name: onlyoffice
restart: always
ports:
- "8443:443"
volumes:
- ./data:/var/www/onlyoffice/Data
- ./logs:/var/log/onlyoffice
- ./lib:/var/lib/onlyoffice
environment:
- JWT_ENABLED=true
- JWT_SECRET=your_strong_password
```
#### 关键参数说明
| 参数 | 作用 | 示例值 |
|------|------|--------|
| `JWT_ENABLED` | 启用API安全验证 | `true` |
| `JWT_SECRET` | 签名密钥(至少16字符) | `MySuperSecretKey123!` |
| `DB_TYPE` | 数据库类型(默认SQLite) | `postgres` |
---
### **3. 初始化配置**
1. **访问控制台**
安装完成后访问:
`http://服务器IP:8080/welcome/`
HTTPS需配置SSL证书)
2. **验证服务状态**
```bash
docker exec onlyoffice-docs supervisorctl status
```
正常应显示:
`docservice: RUNNING`
`converter: RUNNING`
`proxy: RUNNING`
---
### **4. 常见问题解决**
#### 🔴 端口冲突
错误表现:
`Address already in use`
解决方案:
```bash
# 查看占用进程
sudo lsof -i :8080
# 修改映射端口(如改为8090
docker run ... -p 8090:80 ...
```
#### 🟡 字体缺失
中文显示异常时:
```bash
# 进入容器安装字体
docker exec -it onlyoffice-docs bash
apt update && apt install -y fonts-wqy-microhei
```
#### 🟢 性能优化
```yaml
# 在docker-compose.yml中添加资源限制
deploy:
resources:
limits:
cpus: '2'
memory: 4G
```
---
### **5. 进阶功能**
#### 集成Nextcloud/OwnCloud
1. 安装ONLYOFFICE插件
2. 配置连接地址:
`https://your-server:8080/web-apps/apps/api/documents/api.js`
#### 备份策略
```bash
# 定期备份数据卷
tar -czvf onlyoffice_backup_$(date +%F).tar.gz /app/onlyoffice
```
---
> 💡 **提示**
> - 如需HTTPS访问,推荐使用Nginx反向代理+Let's Encrypt证书
> - 企业版需替换镜像为`onlyoffice/documentserver-ee`
需要更详细的Nginx配置或集群部署方案吗?
#### Sources:
- [[ONLYOFFICE 协作空间 3.0 新功能详解 - 知乎]]
- [[docker 日志清除命令 - 搜索]]
+281
View File
@@ -0,0 +1,281 @@
# Postgresql
- 进入postgresql
docker ps | grep postgresql
docker exec -it container_id bash
psql -U moviepilot
# Syncthing
Syncthing遇到权限问题,解决办法:
https://zhuanlan.zhihu.com/p/29836885447
https://www.orcy.net.cn/1636.html
# airconnect
```
services:
airconnect:
network_mode: host
image: 1activegeek/airconnect
```
群晖上也有airconnect套件
原理:提供airserver,类似airserver
安装airconnect,就是一台airplay server,使用iPhone或者支持airplay的客户端在内网就能找到这些设备播放!
https://github.com/philippe44/AirConnect
https://gitcode.com/gh_mirrors/ai/AirConnect
https://post.smzdm.com/p/awovpkgm/
https://github.com/eizedev/AirConnect-Synology
https://hin.cool/posts/airconnect.html
https://sspai.com/post/65136
# Openlist
- 飞牛权限
https://club.fnnas.com/forum.php?mod=viewthread&tid=34775
# Openwrt
设置桥接方式:
删除或者停止WAN接口
进入LAN设置,选静态地址->br-lan
填写IPV4地址
进入DHCP,勾选忽略此接口
将上游网线插入三个LAN之一,不能插入WAN(靠近电源)口
无线接口只要选中网络为LAN即可,保存应用,重启路由器OK!
# 网络相关
## 本地IP
curl https://myip.ipip.net
https://ddns.oray.com/checkip, https://ip.3322.net, https://4.ipw.cn, https://v4.yinghualuo.cn/bejson
## iftop
https://blog.meow.page/archives/find-which-process-eat-my-bandwidth-on-synology/
[[`iftop` 是一个实时网络流量监控工具,类似 `top`]]
# 数据同步迁移
## rsync
群晖(Synology)与飞牛(FeiNiu,国产私有云NAS)之间**原生不支持双向实时同步**,因二者分属不同生态,无官方互通协议(如Synology的Synology Drive Server与飞牛的“飞牛云”未开放标准WebDAV/Resilio Sync/Nextcloud兼容接口)。用户常误以为启用双方的“文件同步”功能即可自动双向实时同步,实则面临:① 协议不兼容导致连接失败;② 即便通过WebDAV挂载实现单向同步,也无法触发删除、重命名等元数据的双向传播;③ 实时性依赖轮询(如每5–30分钟),非真正inotify级实时;④ 权限、硬链接、扩展属性(xattr)及AFP/SMB特殊语义丢失。此外,跨平台ACL映射缺失易引发权限混乱,而飞牛对SMB3多通道或群晖Btrfs快照的兼容性亦未验证。若强行用rsync+inotify或第三方工具(如FreeFileSync+WatchService),将牺牲原子性、断点续传与冲突自动处理能力——这正是双向实时同步落地的最大障碍。
- 飞牛数据备份和恢复
停止docker服务
卸载存储2
lsblk -fp 查看未挂载设备ID
只读挂载到存储空间2
mount -t btrfs -o ro,usebackuproot,rescue=all /dev/mapper/trim_7db5153a_b22d_43bc_a516_5041e3e504f7-0 /vol2
如果是ext4 文件系统:
mount -t ext4 -o ro /dev/mapper/trim_7db5153a_b22d_43bc_a516_5041e3e504f7-0 /vol2
将磁盘盒接入飞牛,第一次清除磁盘,格式化成btrfs,
nohup rsync -avz /source/path user@remote:/destination/path > rsync.log 2>&1 &
tail -f rsync.log
简化:
rsync -av --numeric-ids --delete /vol2 /vol5 &
同一个服务器可以简化成:
rsync -av --delete /vol2 /vol5 &
报错:
rsync: [receiver] mkstemp failed: Operation not permitted (1)
chmod -R 700 /vol5
mkdir -p /vol5/vol2
chmod -R 755 /vol5/vol2
rsync -av /vol2 /vol5
由于上述问题,手工在飞牛界面卸载了存储空间5,怀疑是存储空间5挂载方式问题,手工输入同样的命令,rsync没有报上述错误,然后手动将外接磁盘挂载到:
当然先要准备:
mkdir -p /vol4/DataBackup
chmod -R 755 /vol4/DataBackup
mount -t btrfs -o rw /dev/mapper/trim_9bdcaad4_ea98_4d60_8602_7999eb18868c-0 /vol4/DataBackup
开始打算挂载到/vol5结果不成功,提示没有vol5这个存储空间,在飞牛界面去创建存储空间5,报没有可用的磁盘,只好采用上述办法,命令行少了:usebackuproot,rescue=all
mount -t btrfs -o rw /dev/mapper/trim_9bdcaad4_ea98_4d60_8602_7999eb18868c-0 /vol4/DataBackup ✅
rsync -av /vol2/1000/Photos /vol4/DataBackup
测试OK
清理/vol4/DataBackup
rsync -av /vol2 /vol4/DataBackup &
按单个目录来复制:
rsync -av /vol2/@appconf /vol4/DataBackup/vol2
还是老问题!
???
为什么下面的命令可以执行?
rsync -av /vol2 /vol3/1000/20260601 --exclude={all.mp4,config.mp4,115.mp4,pikpak.mp4}
rsync -av /vol2 /vol5/
rsync -av /vol2 /vol4/DataBackup
/DataBackup是mount挂载的另一个盘,= /vol5
/vol5和/vol3、/vol4 本质上都是外接USB盘,前者不行,后2者可以?
网上很多这种提问,是目标目录或者目标服务器的文件系统权限不一致,可是:
我现在的这种同步或者备份方式,都是为了保存原来的数据和权限,-a ,而且为避免跨服务器权限问题,在同一台服务器上使用不同的磁盘备份数据。
rsync -av /vol2/@appconf /vol4/DataBackup/vol2 ❌
rsync -av /vol2/@appconf /vol4/1000/DataBackup ✅
说明和分析:
上面 /vol2/@appconf是root:root 复制到/vol4/DataBackup root:root权限
下面 /vol2/@appconf是root:root 复制到/vol4/1000DataBackup fnAdmin:root权限
使用的root用户操作,将root文件复制到root权限不行,
将root权限复制到fnAdmin权限就可以?
就是说root目标目录下不能保存非root权限的文件?ACL限制?!
解决方案:
- 重启系统后先挂载新磁盘,目标盘为存储空间2,btrfs
- 再挂载原先的磁盘(原来的存储空间2),挂载后变成存储空间5
- 以root身份SSH到fn,创建一个脚本/root/rsync-5-2.sh
```
#rsync -av /vol4/1000/Temp/vol2/1000/Photos /vol2/1000 rsync -av /vol4/1000/Temp/vol2/1000/docker /vol2/1000
rsync -av /vol4/1000/Temp/vol2/1000/downloads /vol2/1000
rsync -av /vol4/1000/Temp/vol2/@appcenter /vol2
rsync -av /vol4/1000/Temp/vol2/@appconf /vol2
rsync -av /vol4/1000/Temp/vol2/@apphome /vol2
rsync -av /vol4/1000/Temp/vol2/@appdata /vol2
rsync -av /vol4/1000/Temp/vol2/@appmeta /vol2
rsync -av /vol4/1000/Temp/vol2/@appshare /vol2
#rsync -av /vol4/1000/Temp/vol2/@apptemp /vol2
rsync -av /vol4/1000/Temp/vol2/docker /vol2
rsync -av /vol4/1000/Temp/vol2/@sysappmeta /vol2
rsync -av /vol4/1000/Temp/vol2/appcenter-downloads /vol2
rsync -av /vol4/1000/Temp/vol2/.cache.trim-sysrestore /vol2
rsync -av /vol4/1000/Temp/vol2/mediasrv.transcode /vol2
```
先手工使用
rsync -av /vol4/1000/Temp/vol2/1000/Photos /vol2/1000
rsync -av /vol4/1000/Temp/vol2/@apptemp /vol2
测试通过!
没有报上述错误的原因是什么呢:
没有想明白。。。
至少这种方式rync在创建mkstemp没有权限问题了!
然后开始运行脚本!
这种方式也是直接替换某个飞牛数据盘的方法:
先卸载需要替换的磁盘,使用磁盘盒接入新盘
重启系统
挂载新盘为存储空间2,在挂载原来的磁盘为存储空间5
cd /root
./rsync-5-2.sh &
注意有2个目录先期做了测试,注释了!
当然还是先做好备份再用这个方法保险!
【20260603】
昨天用256G SSD替代了原来的128G SSD
方法:
先将原来的SSD做了一个全盘克隆 Windows下DG
然后还是用DG将SSD克隆到256G的SSD上,按扇区原样,主要是因为有引导分区,保持原来的分区1大小,系统分区,大约54G
先保存存储空间,尽管没有什么数据,
删除分区2,trim分区,就是存储空间1
lsblk
parted /dev/sdX
rm 2
q
重启系统,进入存储空间管理,添加存储空间。。。选上面的分区->basic->格式化
cd /vol1
rsync -av /vol3/1000/20260601/vol2/docker /vol1
将docker迁移到存储空间1,以便获得更快的运行速度
重启系统,正常
过了一会,好像没多久,突然发现存储空间2变成只读了!
然后又开始折腾,寻找各种办法,
重启后依然不能挂载存储空间2,用之前的命令
mount -t btrfs -o rw 不行,改为
mount -t btrfs -o ro,usebackuproot,rescue=all /dev/mapper/trim_7db5153a_b22d_43bc_a516_5041e3e504f7-0 /vol2
由于已有备份,这次就没有rsync备份
btrfs scrub
btrfs check --repair
各种失败,只好放弃,打算umount,结果不让unmount
fuser -mv /vol2
kill -9 xx
失败!
只好重启,存储空间2依然没有挂载
只好格式化:
mkfs.btrfs /dev/mapper/xxx 注意不能mkfs.btrfs /dev/sda
进入存储空间管理挂载,成功!
rsync -av /vol3/1000/20260601/vol2/1000/docker /vol2/1000
将docker数据恢复到存储空间2,开启docker,正常!
但是有几个容器或者compose不能启动camkeep/t3fap/owncloud,发现是路径是<font color="#c0504d">/vol1/</font>overlay...
需要删除镜像,再重新拉取镜像构建。
owncloud是使用volumes,通过
docker volumes inspect 卷名
在备份的文件中找到/vol2/docker/volumes/owncloud_mysql/_ Data目录,cp -r 就恢复了!
xiaoya不能正常运行,原因未知,天园没有这个问题,可能是/vol2/docker文件还在,没有删除,一旦移走,估计会像东玺门一样不能运行,需要重新卸载->安装,上午一直安装xiaoya不成功,只要是aliyunTVToken获取程序有问题,程序员可能在调试。。。
中午安装成功了!
将/vol2应用进行恢复
rsync -av /vol3/1000/20260601/vol2/@appcenter /vol2
。。。
现在情况是2个节点都已经更换了系统盘
备份机制:
每天零点自动做快照
定期(初步计划是每周)做一个rsync同步,在本机的其他磁盘上
每周9161负责将docker数据文件备份到9161上
两边节点的原来系统盘(120G)全部保存,以防万一。
几个需要关注的问题:
1、东玺门存储空间2磁盘,每天系统重启后报错,需要经常关注下是否到了很严重的地步(昨天就不能挂载了,今天更换了!不能偷懒!)
2、感觉天园飞牛重启系统恢复正常很慢,至少10分钟以上?
# 远程文件夹装载
![image.png](https://lsky.himan.cloud/i/2026/06/08/6a2627598f00f.png)
@@ -0,0 +1,162 @@
---
title: `iftop` 是一个实时网络流量监控工具,类似 `top`
created: 2026-05-31
source: Cherry Studio
tags:
---
`iftop` 是一个实时网络流量监控工具,类似 `top` 命令,但专注于显示 **网络接口的带宽使用情况**,常用于排查服务器带宽占用过高的问题。
---
## **1\. 安装 iftop**
### **Debian/Ubuntu**
```bash
sudo apt install iftop
```
### **RHEL/CentOS**
```bash
sudo yum install epel-release # 确保EPEL仓库可用
sudo yum install iftop
```
### **Arch Linux**
```bash
sudo pacman -S iftop
```
---
## **2\. 基本使用方法**
### **直接运行(默认监控所有网卡)**
```bash
sudo iftop
```
(需要 `root` 权限,因为要抓取网络数据包)
### **指定网卡(如 eth0、ens3**
```bash
sudo iftop -i eth0
```
### **按目标 IP 排序(**`-n` **不解析主机名)**
```bash
sudo iftop -n
```
(避免DNS查询,加快显示)
---
## **3\. 界面交互操作**
`iftop` **运行时,可以使用以下快捷键调整显示方式:**
| 按键 | 功能 |
| --- | --- |
| `h` | 显示帮助 |
| `n` | 打开/关闭主机名解析(DNS) |
| `s` | 显示源IP(默认显示目标IP) |
| `d` | 显示目标IP(切换) |
| `t` | 切换流量显示模式(单行/两行/合计) |
| `N` | 切换端口显示(开启/关闭) |
| `p` | 显示/隐藏端口号 |
| `P` | 暂停流量刷新 |
| `q` | 退出 iftop |
---
## **4\. 常用高级参数**
### **显示特定网段的流量(如 192.168.1.0/24**
```bash
sudo iftop -F 192.168.1.0/24
```
### **按带宽排序**
```bash
sudo iftop -B
```
(默认单位为bit/s,可加 `-B` 改 bytes/s
### **显示端口**
```bash
sudo iftop -P
```
(显示哪些TCP/UDP端口在使用带宽)
### **过滤特定流量(如只显示HTTP)**
```bash
sudo iftop -f "port 80"
```
(支持 `tcpdump` 语法,如 `host 1.1.1.1`
---
## **5\. 示例使用场景**
### **① 检查哪个 IP 占用带宽最高**
```bash
sudo iftop -n -i eth0
```
👉 **观察** `=>` **和** `<=` **方向流量,找到占用最高的 IP** (按 `<``>` 可切换排序)
### **② 分析网站访问流量**
```bash
sudo iftop -n -P -i eth0 -f "port 80 or port 443"
```
👉 查看Web请求(HTTP/HTTPS)的流量分布
### **③ 监控某台服务器的流量**
```bash
sudo iftop -n -i eth0 host 192.168.1.100
```
👉 只显示与 `192.168.1.100` 通信的流量
---
## **6\. 注意事项**
- `iftop` **不记录历史流量**,如果需要长期日志,可以用 `nethogs``vnstat`
- **高流量环境下**可能导致显示不流畅,可尝试 `-N` 关闭端口解析优化性能。
- **远程服务器监控** 可能需要工具如 `nload``bmon`iftop 更适合本地实时监控)。
---
### **替代工具**
| 工具 | 特点 |
| --- | --- |
| **nethogs** | 按进程查看流量(类似 `top` |
| **vnstat** | 每天/每月流量统计(长期记录) |
| **bmon** | 更美观的终端带宽监控 |
| **iptraf** | 更详细的流量分析 |
---
通过 `iftop` 可以快速定位 **谁在占用** 网络带宽,适合运维排查高负载问题 🚀。
+141
View File
@@ -0,0 +1,141 @@
---
created: 2025-08-31T10:37
updated: 2025-08-31T10:47
---
以下是 **MinIOS3兼容存储)的Docker部署教程**,支持私有化部署和API兼容AWS S3:
---
### **1. 快速启动(单机版)**
#### 基础命令
```bash
docker run -d \
-p 9000:9000 -p 9001:9001 \
-v /mnt/data:/data \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=your_strong_password" \
--name minio \
quay.io/minio/minio server /data --console-address ":9001"
```
- **访问控制台**`http://服务器IP:9001`
- **API端点**`http://服务器IP:9000`
- 默认账号:`admin` / 密码:`your_strong_password`
---
### **2. 生产环境配置(docker-compose.yml**
```yaml
version: '3.7'
services:
minio:
image: quay.io/minio/minio
command: server /data --console-address ":9001"
ports:
- "9000:9000" # API端口
- "9001:9001" # 控制台端口
volumes:
- ./minio-data:/data
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: your_strong_password
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
```
---
### **3. 分布式部署(4节点示例)**
```bash
# 每个节点执行(修改对应IP和目录)
docker run -d \
--net=host \
-v /mnt/disk1:/data1 \
-v /mnt/disk2:/data2 \
quay.io/minio/minio server \
http://node{1...4}/data{1...2} \
--console-address ":9001"
```
> 📌 要求:
> - 至少4个节点
> - 每个节点2块磁盘
> - 同一内网互通
---
### **4. 客户端连接配置**
#### AWS CLI配置
```bash
aws configure set aws_access_key_id admin
aws configure set aws_secret_access_key your_strong_password
aws configure set default.region us-east-1
aws --endpoint-url http://localhost:9000 s3 ls
```
#### Python示例
```python
import boto3
s3 = boto3.client('s3',
endpoint_url='http://localhost:9000',
aws_access_key_id='admin',
aws_secret_access_key='your_strong_password')
s3.create_bucket(Bucket='my-bucket')
```
---
### **5. 常见问题解决**
#### 🔴 存储权限问题
```bash
# 修改数据卷权限
chown -R 1001:1001 /mnt/data
```
#### 🟡 控制台无法访问
检查防火墙规则:
```bash
sudo ufw allow 9000/tcp
sudo ufw allow 9001/tcp
```
#### 🟢 数据备份
```bash
# 使用mc客户端同步
docker run -it --entrypoint=/bin/sh minio/mc
mc mirror local/ minio/backup-bucket/
```
---
### **6. 监控与运维**
#### 启用Prometheus监控
```yaml
# 在docker-compose.yml中添加环境变量
environment:
MINIO_PROMETHEUS_AUTH_TYPE: "public"
MINIO_PROMETHEUS_URL: "http://prometheus:9090"
```
#### 日志查看
```bash
docker logs --tail 100 -f minio
```
---
### **7. 进阶功能**
| 功能 | 配置方法 |
|--------------------|---------------------------------------|
| **SSL证书** | 挂载证书到`/root/.minio/certs`目录 |
| **版本控制** | `mc version enable my-bucket` |
| **生命周期管理** | 通过控制台配置自动删除规则 |
| **多租户** | 使用`mc admin policy`创建独立用户权限 |
> 💡 推荐工具:
> - 管理客户端:[`mc`命令行工具](https://min.io/docs/minio/linux/reference/minio-mc.html)
> - 可视化工具:[MinIO Console](http://localhost:9001)
需要更详细的HTTPS配置或性能优化参数吗?
+76
View File
@@ -0,0 +1,76 @@
## [
云服务器搭建网站](https://developer.aliyun.com/article/771224)
[1](https://developer.aliyun.com/article/771224)[2](https://blog.csdn.net/weixin_74009030/article/details/131200303)[3](https://cloud.tencent.com/document/product/213/39130)
[
](https://developer.aliyun.com/article/771224)
[
](https://blog.csdn.net/weixin_74009030/article/details/131200303)
[
](https://cloud.tencent.com/document/product/213/39130)
在云服务器上搭建网站是一个常见的任务,以下是详细步骤,帮助您快速完成网站部署。
1. 购买域名和云服务器
- **域名**:选择常见后缀(如 _.com_、_.net_),并完成实名认证。
- **云服务器**:推荐选择阿里云或腾讯云的轻量应用服务器,适合个人或小型网站。购买时注意选择合适的地域(如香港,无需备案)。
2. 配置云服务器
- **设置密码**:登录云服务商控制台,修改默认密码。
- **开放端口**:在防火墙或安全组中开放必要端口: 80(HTTP)、443HTTPS)、22SSH)、8888(宝塔面板)。
- **远程连接**:使用工具如 XShell 或 Workbench 连接服务器。
3. 安装宝塔面板
宝塔面板简化了服务器管理和网站搭建流程。
- 在终端输入以下命令安装宝塔:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
![复制](data:image/svg+xml,%EF%BB%BF%3Csvg%20width%3D%2218%22%20height%3D%2219%22%20viewBox%3D%220%200%2018%2019%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%20%20%20%20%3Cpath%20d%3D%22M4.11363%203.54174L4.11153%205.16645V13.2054C4.11153%2014.579%205.19925%2015.6926%206.54102%2015.6926L12.982%2015.6929C12.751%2016.3615%2012.1281%2016.8406%2011.3958%2016.8406H6.54102C4.57998%2016.8406%202.99023%2015.2131%202.99023%2013.2054V5.16645C2.99023%204.41591%203.45927%203.77752%204.11363%203.54174ZM13.2688%201.53125C14.1977%201.53125%2014.9508%202.30219%2014.9508%203.25319V13.2022C14.9508%2014.1531%2014.1977%2014.9241%2013.2688%2014.9241H6.54102C5.6121%2014.9241%204.85907%2014.1531%204.85907%2013.2022V3.25319C4.85907%202.30219%205.6121%201.53125%206.54102%201.53125H13.2688ZM13.2688%202.67921H6.54102C6.23138%202.67921%205.98037%202.93619%205.98037%203.25319V13.2022C5.98037%2013.5192%206.23138%2013.7761%206.54102%2013.7761H13.2688C13.5784%2013.7761%2013.8295%2013.5192%2013.8295%2013.2022V3.25319C13.8295%202.93619%2013.5784%202.67921%2013.2688%202.67921Z%22%20fill%3D%22%23767676%22%20%2F%3E%0D%0A%3C%2Fsvg%3E)
- 安装完成后,记录面板地址、账号和密码。
- 在浏览器中访问面板地址,登录并安装 LNMP 或 LAMP 环境。
4. 上传网站程序
- **博客程序**:如 WordPress、Typecho。
- **论坛程序**:如 Discuz!。
- **自定义代码**:将代码压缩后上传至宝塔文件管理器并解压。
5. 配置域名解析
- 在域名管理平台添加解析记录: 主机记录为 www 或 @,记录值为服务器 IP。
- 确保解析生效后可通过域名访问网站。
6. 测试与优化
- 测试网站功能是否正常运行。
- 根据流量需求调整服务器配置。
通过以上步骤,您可以快速在云服务器上搭建属于自己的网站!
@@ -0,0 +1,114 @@
---
title: # 修复 Btrfs 文件系统错误并恢复 Docker 运行
created: 2026-05-31
source: Cherry Studio
tags:
---
# 修复 Btrfs 文件系统错误并恢复 Docker 运行(飞牛系统)
当 Btrfs 文件系统因断电变为只读时,您需要按照以下步骤修复:
## 1\. 卸载文件系统(如果已挂载)
```bash
sudo umount /path/to/存储空间2
```
## 2\. 运行 Btrfs 文件系统修复
### 基本修复(尝试正常恢复)
```bash
sudo btrfs check --readonly /dev/sdX2 # 先只读检查,替换为实际设备名
```
### 如果发现错误需要修复
```bash
sudo btrfs check --repair /dev/sdX2
```
**注意**`--repair` 选项有一定风险,建议先备份重要数据。它会尝试自动修复文件系统结构错误。
## 3\. 高级修复选项(如果基本修复无效)
### 重置日志(log tree
```bash
sudo btrfs rescue zero-log /dev/sdX2
```
### 清除损坏的树(谨慎使用)
```bash
sudo btrfs rescue clear-ino-cache /dev/sdX2
sudo btrfs rescue fix-device-size /dev/sdX2
```
## 4\. 重新挂载文件系统
```bash
sudo mount -t btrfs -o compress-force=zstd,noatime,space_cache=v2 /dev/sdX2 /path/to/存储空间2
```
## 5\. 恢复 Docker 服务
```bash
sudo systemctl restart docker
```
### 检查容器状态
```bash
docker ps -a
```
### 尝试启动容器
```bash
docker start $(docker ps -aq)
```
## 6\. 如果仍有问题
### 重建 Btrfs 空间缓存
```bash
sudo btrfs filesystem resize max /path/to/存储空间2
```
### 检查并修复子卷
```bash
sudo btrfs subvolume list /path/to/存储空间2
sudo btrfs subvolume sync /path/to/存储空间2
```
## 7\. 预防措施
1. **启用 Btrfs 异步写入**`/etc/fstab`中添加`async`选项
2. **定期检查与平衡**
```bash
sudo btrfs scrub start /path/to/存储空间2
sudo btrfs balance start -dusage=50 -musage=50 /path/to/存储空间2
```
3. **考虑使用 RAID1**
```bash
sudo btrfs device add /dev/sdY /path/to/存储空间2
sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /path/to/存储空间2
```
4. **启用 COW 禁用**: 对 Docker 存储目录禁用写入时复制:
```bash
sudo chattr +C /path/to/存储空间2/docker
```
如果上述方法仍无法修复,您可能需要考虑从备份恢复数据或联系专业数据恢复服务。
+273
View File
@@ -0,0 +1,273 @@
---
createDate: <% tp.file.creation_date("YYYY-MM-DD HH:mm")%>: 星期五, 七月 11日 2025, 8:50:05 早上
date modified: 星期六, 八月 2日 2025, 12:25:07 中午
createDate: <% tp.file.creation_date("YYYY-MM-DD HH:mm")%>: 星期五, 七月 11日 2025, 8:50:05 早上
---
## 1. RSS是什么
网页以RSS的形式为其内容提供一个通过URL获得的提要。RSS提要文件包含大量离散的新闻项,每一个RSS文件包含一个频道(Channel)。一个频道必须至少具备以下元素:Title(标题),在Description(描述)中对频道的简单介绍;Link(链接相应的目标网页);Language(频道语言)。每个频道由若干个Item(项)组成,每个项包含了一个URL,一个标题和一个摘要。RSS技术主要包含两个重要组件, RSS 提要(Feed)和RSS阅读器。
比如某个博客(Blog)的入口,其基本语法如下:
```
<channel>
  <title><!-- channel 的标题 --></title>
  <description><!-- 简要描述 --></description>
  <link><!-- channel 的 URL --></link>
  <!-- 可选/可扩展元素 -->
  <item>
  <title><!-- 项标题 --></title>
  <link><!-- 项 URL --></link>
  <description><!-- 简要描述 --></description>
  <!-- 可选的/可扩展的元素 -->
  </item>
</channel>
```
## 2. RSS文件结构
RSS是两级结构,第一级结构是channel,相当于blog系统中某人的blog,第二级结构是item,相当于blog中的文章。属性中最重要的是title、description和linktitle是标题,description是介绍,link是与其相关的url。
```
1. <?xml version="1.0" encoding="gb2312" ?>
2. <rss version="2.0">
3. <channel>
4. <title>我的Blog</title> //channel的标题
5. <description>与我自己的技术Blog相关联</description> //channel的介绍
6. <link>http://counter.csdn.net/pv.aspx?id=72</link> //channel的url
7. <item>
8. <title><!-- 项标题 --></title> //item的标题
9. <link><!-- 项 URL --></link> //item的url
10. <description><!-- 简要描述 --></description> //item的介绍
11. <!-- 可选的/可扩展的元素 --> //item的其他属性,比如更新时间
12. </item>
13. <item>
14. <!-- 可多个<item>项目--> //一个channel有多个item
15. </item>
16. </channel>
17. </rss>
## 3. RSS制作
```
烧制网页 RSS 源,主要有 **FEED43****Huginn** 两种方法:
- FEED43:简单免费,六小时抓取一次,每次抓取 20 条静态页面。
- Huginn:自由度高,能自定义**抓取频率、内容结构、js 结果、输出样式**等;需要搭建服务器,学习 Huginn 抓取规则。
[Huginn](http://github.com/huginn/huginn)
! [Huginn]([https://github.com/yourname/huginn](https://github.com/yourname/huginn))
## 3. 工作机制
内容提供者在其网站上添加RSS的链接,以提供RSS订阅功能,当打开这个链接时,传送过去了一些频道信息,比如:blog的作者名。
一种做法是,RSS链接URL指向的是一个空内容的页面,该页面后台程序通过传过来的频道信息访问数据库,获取频道列表,用Response.Write向该空页面写出XML格式的文件。
另一种做法是,RSS链接URL指向的是一个xml文件,该文件由服务器的程序事先生成好的,放在服务器上,访问时静态获取,服务器在作者每添加一个频道列表时自动更新该xml文件。
第一种做法的优点是管理方便,因为不需要为每个频道生成xml文件,所有的RSS请求都由一个后台页面处理,接口统一,但每次访问RSS链接时,都要动态地写出RSS频道列表,访问效率相对较低,第二种做法的优点是访问时,只是返回一个静态的xml文件,不需要访问数据库来临时生成,所以访问效率相对较高,但每更新一次频道列表中的项时,就要自动地重新生成xml文件以保证RSS文件的最新,这样就降低了更新的效率。
## 4. RSSHub
一个开源易扩展的rss生成器,简单来说:让万物皆可rss。
本质上是一个爬虫路由及解析服务。开发者可以通过got、cheerio等库,来抓取网页数据,交由rsshub生成rss源。
RSSHub是GitHub上的一款开源RSS聚合软件。凭借良好的可拓展性和富有活力的社区,它现在已经可以将大部分常用网站的文章转化为RSS形式,让你可以在一个RSS阅读器上聚合阅读所有网站的内容。
作者:DIYGod 博客网址:https://diygog.cc
设计初衷:解决RSS订阅,需要梯子的RSS源和没有RSS源的信息订阅
当我们进入一个新页面时,RSSHub Radar 开始检测当前页面的 RSS 和 RSSHub
### **当前页面自带的 RSS**
分析页面中的每个链接显然是不现实的,好在标准中指定了一种特殊 MIME 类型的 link 标签来指明 RSS 链接,`link[type="application/rss+xml"]` 和 `link[type="application/atom+xml"]`RSSHub Radar 正是通过这个标签来检测页面是否有自带 RSS,具体实现在[这里](https://link.zhihu.com/?target=https%3A//github.com/DIYgod/RSSHub-Radar/blob/master/src/js/content/utils.js%23L14)
### **适用于当前页面的 RSSHub**
使用[给定规则](https://link.zhihu.com/?target=https%3A//github.com/DIYgod/RSSHub/blob/master/assets/radar-rules.js),根据当前页面的 URL 或 DOM 来获取 RSSHub 链接,规则各个字段的具体含义见[文档](https://link.zhihu.com/?target=https%3A//docs.rsshub.app/joinus/%23%25E6%258F%2590%25E4%25BA%25A4%25E6%2596%25B0%25E7%259A%2584-rsshub-radar-%25E8%25A7%2584%25E5%2588%2599),具体实现在[这里](https://link.zhihu.com/?target=https%3A//github.com/DIYgod/RSSHub-Radar/blob/master/src/js/background/utils.js%23L111)
每隔 5 个小时从 GitHub 远程更新一次规则
- RSSHub/RSSHub Radar/TTRS
RSSHub顾名思义RSS集散地,可以集中订阅各种Rss源,而且可以创建Rss源,以供订阅。
由于网络问题,
RSSHub Radar也是DIYGod编写的,一个浏览器插件,作用有三个:发现网页RSS;匹配是否存在已知规则,如果是,则显示自建RSSHub的完整RSS订阅链接;同时提供推送到订阅平台或者阅读器快捷方式
[Tiny Tiny RSS](https://link.zhihu.com/?target=https%3A//tt-rss.org/)作为RSS服务器,[RSSHub](https://link.zhihu.com/?target=https%3A//docs.rsshub.app/)作为RSSfeed的生成器
## 5. RSS阅读器
- MacReeder、fluent reader、feeder、feedflow、ReadKit
- Windowsirreader、fluent reader、
- iOSUnread、reeder5 、feedly、fluent reader
- Andriod
- RSS服务平台:feedly.com、innoreader.com、qireader.com
- 自建RSS平台:TTRSS、FreshRSS、Miniflux
### 5.1 RSS的订阅
有的网站提供了RSS自动发现机制,可以很方便地把RSS的URL添加到RSS阅读器中。如果没有自动发现,那么可以手动把RSS链接的URL添加到RSS阅读器中,这样就加入了一个用户订阅的频道。在RSS阅读器中可以更新频道列表或点击一个item链接打开该item的页面。
浏览器中订阅:两个浏览器插件
RSSHubRadar、油猴脚本
客户端中输入订阅URL即可完成订阅。
由于 RSSHub 支持自建,很多网友都建了一份,并且分享了出来,我们可以叫这些网站为 RSSHub 的镜像网站。如果你不想动手,则完全搭其他网友的“**便车**”。
### 5.2 RSSHub镜像站点
https://rsshub.rssforever.com
https://i.scnu.edu.cn/sub
https://rsshub.anyant.xyz
https://rss.injahow.cn
https://rss.shab.fun
https://rss.injahow.cn
http://himan.picp.net:1202
## 5.3 微信公众号RSS
### 5.3.1 搭建教程,私有化部署
https://github.com/ttttmr/wechat2rss?tab=readme-ov-file
https://wechat2rss.xlab.app/deploy/
https://github.com/ellipse42/wxrss
收费!
### 5.3.2 推荐收录公众号
https://github.com/ttttmr/wechat2rss/issues
- 以下是几个可以寻找 RSS 订阅的网站
- [微文库](https://link.zhihu.com/?target=https%3A//www.wxwenku.com/): 微信公众号的 RSS 订阅,只有部分。
- [Feeddd](https://link.zhihu.com/?target=https%3A//feeddd.org/): 微信公众号的 RSS 订阅。
- [wxrss](https://link.zhihu.com/?target=https%3A//github.com/ellipse42/wxrss): 微信公众号的 RSS 订阅。
- 已知公众号免费RSS
https://wechat2rss.xlab.app/list/all
- WeWe-RSS 免费
WeWe RSS是一款开源的微信公众号订阅工具,它能够将微信公众号的内容转化为RSS格式,让用户可以通过[RSS阅读器](https://zhida.zhihu.com/search?content_id=252105679&content_type=Article&match_order=1&q=RSS%E9%98%85%E8%AF%BB%E5%99%A8&zhida_source=entity)来订阅和阅读微信文章。它支持全文内容输出,自动更新内容,并且支持私有化部署,满足对数据隐私有高要求的用户。
采用sqlite方式,帐号经常失效,免费!
docker-compose.yml:
```
version: '3.9'
services:
app:
image: cooderl/wewe-rss-sqlite:latest
ports:
- 4000:4000
environment:
# 数据库连接地址
# - DATABASE_URL=file:../data/wewe-rss.db
- DATABASE_TYPE=sqlite
# 服务接口请求授权码
- AUTH_CODE=true
# 提取全文内容模式
# - FEED_MODE=fulltext
# 定时更新订阅源Cron表达式
# - CRON_EXPRESSION=35 5,17 * * *
# 服务接口请求限制,每分钟请求次数
# - MAX_REQUEST_PER_MINUTE=60
# 外网访问时,需设置为服务器的公网 IP 或者域名地址
- SERVER_ORIGIN_URL=http://himan.picp.net:4000
volumes:
# 映射数据库文件存储位置,容器重启后不丢失
- ./data:/app/data
```
扩展管理组件:
https://github.com/wyn-ying/wewe-rss-extensions
### 5.3.3 一个成熟的订阅助手
https://github.com/rachelos/we-mp-rss
基于官方接口开发的,docker-cli:
```
docker run -d \ --name we-mp-rss \ -p 4001:8001 \ -e DB=mysql+pymysql://<username>:<password>@<host>/<database> \ -e USERNAME:admin \ -e PASSWORD:admin@123 \ -e DINGDING_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=admin8466 \ -v $(pwd)/data:/app/data \ ghcr.io/rachelos/we-mp-rss:latest
```
## 6. 自建RSS源
- 重要参考链接:
https://zhuanlan.zhihu.com/p/680291195
TTRSS搭建
https://blog.naibabiji.com/tutorial/tiny-tiny-rss.html
TTRSS-Mobile
https://github.com/mboinet/ttrss-mobile
https://blognas.hwb0307.com/linux/docker/788
我的TTRSS网址:
http://himan.picp.net:1810
Reeder客户端目前只支持3种自建HostedServer
![image.png](https://joyimg.cpolar.top/i/2025/07/10/686f67ee28f58.png)
TTRSS安装fever插件Fever API可以支持!
关于FreshRSS见下一节介绍。
自建RSS服务比较:
| 产品 | 优点 | 缺点 |
| ------------- | ---------------------- | ------------- |
| Tiny Tiny RSS | 功能和插件最丰富 | 资源占用多,更新缓慢 |
| FreshRSS | 支持 XPath 抓取不支持 RSS 的网站 | 资源占用也不小 |
| Miniflux | 资源占用小,功能够用 | 无法为每个源自定义抓取间隔 |
| wewerss | | |
注:都是我自己用下来的感觉,不一定准确 如果你要使用 TTRSS,不建议使用官方原版,用 [🐋 Awesome TTRSS](https://ttrss.henry.wang/zh/)
- miniflux搭建教程如下:
https://yfi.moe/post/rsshub-miniflux/
## 7.RSS客户端
- PC
unread、reeder、netnewwire
- 移动端
unread、netnewwire
- 浏览器
feedpro
## 8. 成果和后续计划
### 8.1 微信转发
- http://himan.picp.net:4000 使用微信读书帐号进行抓取,但是不能连续,有封号风险
- http://himan.picp.net:8001 使用官网API接口,比较稳定
## 8.2 TTRSS
- http://himan.picp.net:1810 导入外部opml,订阅了大量RSS,安装了插件,可以在网站或者使用Mobile阅读app如:unread,可以在网页上通过rsshub或脚本直接订阅RSS!
## 8.3 RSSHub
- http://himan.picp.net:1202 可以使用别人已经做好的路由进行订阅;也可以自行进行各种RSS转换好订阅,待学习!
-
## 9. 参考链接
- 网站RSS feed查找工具汇总
https://zhuanlan.zhihu.com/p/719753010
- FreshRSS
https://www.1itao.com/freshrss-localhost.html
https://www.freshrss.org/
- wewerss搭建教程
https://github.com/cooderl/wewe-rss
https://zhuanlan.zhihu.com/p/15414931059
https://blog.csdn.net/wbsu2004/article/details/137666657
https://peterjxl.blog.csdn.net/article/details/141345162?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-1-141345162-blog-137666657.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-1-141345162-blog-137666657.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=2
https://blog.csdn.net/wbsu2004/article/details/137666657
已搭建成功:
http://himan.picp.net:4000/feeds/MP_WXS_3255413770.atom
AuthCode=true
http://himan.picp.net:4000
微信读书:hii
-为什么说 FreshRSS 是我心目中最好的 RSS 阅读器。
1. 免费、无订阅源数量限制、支持全文搜索,常规 RSS 阅读器该有的功能它都有
2. 支持 HTML+XPath(Web 抓取)方式订阅,可以订阅不提供 RSS 的网站内容,搭配 RSSHub 等工具,真正实现“订阅一切”
3. 相对于其他本地 RSS 阅读器,FreshRSS 可做到全平台支持;而相对于其他自建 RSS 阅读器,FreshRSS 的界面更美观,而且搭建更容易
@@ -0,0 +1,198 @@
---
title: 在 __飞牛OS(或其他 Linux 系统)__ 中
created: 2026-07-02
source: Cherry Studio
tags:
---
**飞牛OS(或其他 Linux 系统)** 中,如果某个 **服务进程** 需要在启动时依赖其他前置服务(如数据库、网络等),可以通过以下方法找到并配置这些依赖关系:
---
## **1\. 查看现有服务的依赖(systemd 方式)**
飞牛OS 通常基于 `systemd` 管理服务,可以通过以下命令查看服务的依赖关系:
### **✅ 方法 1:使用** `systemctl list-dependencies`
```bash
# 查看某个服务的依赖树(例如 nginx)
systemctl list-dependencies nginx.service
```
**输出示例:**
```text
nginx.service
● ├─system.slice
● ├─basic.target
● │ ├─paths.target
● │ ├─sockets.target
● │ ├─sysinit.target
● │ └─timers.target
● └─network-online.target
```
- `network-online.target` 表示 `nginx` 依赖网络就绪后才启动。
---
### **✅ 方法 2:使用** `systemctl show`
```bash
# 查看服务的详细依赖信息(包括 Before/After/Wants/Requires
systemctl show nginx.service --property="Requires,Wants,After,Before"
```
**输出示例:**
```text
Requires=basic.target
Wants=network-online.target
After=network.target basic.target
Before=multi-user.target
```
- `Requires`:强依赖(如果该服务启动失败,当前服务也会失败)。
- `Wants`:弱依赖(即使依赖服务失败,当前服务仍会尝试启动)。
- `After`:确保该服务在 `network.target` 之后启动。
- `Before`:确保该服务在 `multi-user.target` 之前启动。
---
## **2\. 分析日志排查启动顺序**
如果服务启动异常(如依赖未满足),可以查看 `systemd` 日志:
```bash
# 查看所有服务的启动日志(按时间排序)
journalctl -b
# 仅查看某个服务的日志(如 mysql)
journalctl -u mysql.service -b
```
**示例问题:**
```text
nginx.service: Failed with result 'dependency'.
```
- 这表明 `nginx` 因依赖项未满足而启动失败。
---
## **3\. 手动设置服务依赖(修改** `.service` **文件)**
如果发现某个服务 **缺少依赖**(如 `app.service` 需要在 `mysql.service` 之后启动):
### **步骤 1:编辑服务文件**
```bash
sudo nano /etc/systemd/system/app.service
```
### **步骤 2:添加依赖关系**
`[Unit]` 部分修改或添加:
```ini
[Unit]
Description=My Application
Requires=mysql.service # 强依赖 MySQL
After=mysql.service # 确保 MySQL 启动后再启动本服务
```
### **步骤 3:重载配置并重启**
```bash
sudo systemctl daemon-reload
sudo systemctl restart app.service
sudo systemctl status app.service # 检查状态
```
---
## **4\. 特殊依赖管理(如** `network-online.target`****
某些服务需要 **网络完全就绪** 后才启动(否则可能因 DNS/路由未生效而失败):
```ini
[Unit]
Description=My Web Service
After=network-online.target # 确保网络完全可用(而不仅是 network.target
Wants=network-online.target # 弱依赖网络
Requires=mysql.service # 强依赖 MySQL
```
---
## **5\. 图形化管理(飞牛OS 可能适用)**
如果飞牛OS 提供 **任务计划或服务管理 GUI**,可以:
1. 进入 **控制面板 → 服务管理**(或类似路径)。
2. 查找目标服务(如 `Web Server`),检查其 **依赖项****启动顺序**
3. 手动调整启动优先级(类似 `systemd``Before/After`)。
---
## **6\. 案例:分析飞牛OS 内置服务**
#### **示例:飞牛NAS 的 Samba 服务依赖**
```bash
# 查看 Samba 的依赖项
systemctl show smbd.service --property="After,Requires"
```
**可能输出:**
```text
After=network.target nmbd.service
Requires=nmbd.service
```
- 说明 `smbd` 依赖 `nmbd`NetBIOS 服务)和网络(`network.target`)先启动。
#### **解决方案:**
如果想 **自定义前置任务**(如挂载存储后再启动 Samba):
```ini
[Unit]
Description=My Custom Samba Service
After=network.target storage-mount.service # 新增存储挂载依赖
Requires=nmbd.service storage-mount.service # 强依赖存储挂载
```
---
## **总结**
| **问题** | **排查方法** | **解决方案** |
| --- | --- | --- |
| 服务启动失败,提示依赖缺失 | `systemctl list-dependencies` | 修改 `.service` 文件的 `After/Requires` |
| 需要等待网络完全就绪 | `After=network-online.target` | 添加 `network-online.target` 依赖 |
| 服务启动顺序不符合预期 | `journalctl -b -u 服务名` | 调整 `Before/After` 顺序或依赖链 |
| 飞牛OS GUI 管理依赖 | 控制面板 → 任务计划 | 手动调整启动顺序或添加触发脚本 |
**关键命令备忘:**
```bash
systemctl list-dependencies <服务名> # 查看依赖树
systemctl show <服务名> --property=After # 查看 After 依赖
sudo systemctl edit <服务名> # 临时修改服务配置
journalctl -b -u <服务名> # 查看启动日志
```
这样就能精准定位并管理飞牛OS 中的 **服务依赖关系**,避免因启动顺序问题导致服务异常!
@@ -0,0 +1,155 @@
---
title: 在 macOS下NVR(网络视频录像机)
created: 2026-05-06
source: Cherry Studio
tags: NVR
---
**macOS** 下搭建 **NVR(网络视频录像机)** 系统,可以选择 **本地软件方案****云/混合方案**,具体取决于摄像头类型(如ONVIF、RTSP/IP摄像头)、存储需求和功能偏好。以下是详细的解决方案:
---
### **1\. 本地NVR软件(macOS原生支持)**
适合希望用Mac直接管理和存储监控视频的用户。
#### **① SecuritySpy(推荐)**
- **特点**
- 专为macOS设计,支持多路摄像头(ONVIF/RTSP/IP/USB)。
- 支持 **AI人形/车辆检测**、时间轴回放、移动警报(邮件/推送)。
- 支持H.265、4K分辨率,可导出MP4/AVI格式。
- **适用场景**:家用、中小型企业监控。
- **官网**[https://www.bensoftware.com/securityspy/](https://www.bensoftware.com/securityspy/)
- **价格**:免费试用,完整版 $99起。
#### **② iSpy(开源方案)**
- **特点**
- 跨平台(macOS需通过Mono运行),支持 **RTSP/ONVIF** 协议。
- 支持运动检测、远程访问、云存储(需配置)。
- **缺点**:界面较旧,依赖Mono环境。
- **官网**[https://www.ispyconnect.com/](https://www.ispyconnect.com/)
- **价格**:免费(高级功能需订阅)。
#### **③ Blue Iris(通过虚拟机运行)**
- **特点**
- Windows平台知名NVR软件,功能强大(支持500+摄像头品牌)。
- macOS可通过 **Parallels Desktop/VirtualBox** 运行Windows虚拟机安装。
- **缺点**:性能开销大,需付费虚拟机软件。
- **官网**[https://blueirissoftware.com/](https://blueirissoftware.com/)
- **价格**:$70(需额外购买Windows虚拟机)。
---
### **2\. 云端/混合NVR方案**
适合远程访问、无需本地存储或Mac长期开机的用户。
#### **① Synology Surveillance Station(需NAS**
- **特点**
- 通过 **Synology NAS**(如DS720+)运行NVRmacOS通过网页端管理。
- 支持AI分析、许可证免费2路摄像头(更多需购买授权)。
- **缺点**:需额外购买NAS设备。
- **官网**[https://www.synology.com/surveillance](https://www.synology.com/surveillance)
#### **② Milestone XProtect(企业级)**
- **特点**
- 专业级NVR,提供macOS客户端(服务器需Windows/Linux)。
- 支持 **无限摄像头**(免费版限8路)、高级分析和多用户管理。
- **官网**[https://www.milestonesys.com/](https://www.milestonesys.com/)
#### **③ Reolink/萤石云(摄像头自带NVR**
- **特点**
- 部分摄像头(如Reolink Argus 3)支持 **SD卡存储+云端备份**,通过官方App(macOS/手机)查看。
- **缺点**:依赖厂商服务,功能受限。
---
### **3\. 自建NVR(开发者/技术用户)**
#### **① FFmpeg + 脚本**
- **方案**
- 用FFmpeg录制RTSP流到本地:
```bash
ffmpeg -i rtsp://摄像头IP -c copy -f segment -strftime 1 "recordings/%Y-%m-%d_%H-%M-%S.mp4"
```
- 配合`cron`定时任务或Python脚本管理存储。
#### **② Shinobi、ZoneMinderDocker部署)**
- **特点**
- 开源NVR,可通过 **Docker for Mac** 运行(需x86 Mac)。
- **部署命令**
```bash
docker run -d -p 8080:8080 -v /path/to/storage:/opt/shinobi/videos shinobisystems/shinobi
```
---
### **4\. 选择建议**
| **需求** | **推荐方案** |
| --- | --- |
| 简单家用,macOS原生 | SecuritySpy |
| 免费开源 | iSpy 或 DockerShinobi |
| 企业级多摄像头 | Synology NAS 或 Milestone |
| 远程访问+云存储 | Reolink/萤石云摄像头 |
| 技术用户自定义 | FFmpeg + 脚本 或 Docker自建NVR |
---
### **注意事项**
- **摄像头兼容性**:优先选择支持 **ONVIF****RTSP** 协议的摄像头(如海康威视、大华、Amcrest)。
- **存储规划**:视频文件占用空间大(如1080P摄像头约1GB/小时),建议外接硬盘或NAS。
- **Mac长期开机**:NVR需24/7运行,建议关闭Mac睡眠模式(`系统设置 > 电池 > 电源适配器`)。
如果需要具体型号推荐或部署帮助,可以进一步说明需求(如摄像头数量、预算等)!
+9
View File
@@ -0,0 +1,9 @@
- api.note.sx
token:ae2dcd41012548ce5cd384142db6bec0
url:api.note.sx
purpose: share note over note.sx
+145
View File
@@ -0,0 +1,145 @@
---
createDate: <% tp.file.creation_date("YYYY-MM-DD HH:mm")%>: 星期二, 七月 22日 2025, 1:32:52 下午
date modified: 星期日, 七月 27日 2025, 6:04:28 晚上
---
创建日期:[[../80-数据归档/91-日记归档/910-工作日记/202507/2025-07-03]]
现有笔记软件非常多,各有特点,总结一下:
## 笔记软件
### Obsidian
记录每天工作和学习
- 移动端设置需要使用Remotely Save插件-WebDav,关键点:==仓库名称要和电脑端的Obsidian的仓库名一致!!==再点击Greate,进入插件市场安装Remotely Save设置远程Vault对应的urlWebDav
- iOS移动端git插件:同步忽略.git等文件。
### DayOne
- 记录每天的心情
### 手记
- 记录旅游-iOS
### 语雀
- 记录技术和工作,适合编写专业性知识库
### Joplin
- 编写/修改博客-/语雀,导入/导出比较方便,配合网页裁剪,作为网络资源入口
### MWebPro
- 博客发布
导入从Joplin抓取的文章,进行修整,图床选择,再发布到阿里云ECS
逐步被OB取代!
### Memos
- 替代DayOne
- Mac客户端 1.0 基本不可用
### CuboX
- 移动端收集各类文章信息,自动同步到OB
-
### DevonThink
- 配合OB,成为OB资料入口
- 各类导入、资源的汇集
-
## 使用介绍
### Joplin问题
- Joplin 导出格式:JEX 、RAW 如何选择?
**JEX 格式**:生成一个包含所有笔记、笔记本、标签和资源的单一压缩文件,适合备份和在 Joplin 内部恢复
**RAW 格式**:导出为包含所有笔记和资源的文件夹和文件结构,方便在 Joplin 之外访问或编辑笔记
选择取决于你的需求:如果你需要完整备份和恢复,请导出 JEX;如果你需要直接访问笔记文件,请导出 RAW
如果需要更换Joplin位置,先导出为一个JEX文件,然后在客户端新建一个配置,设置好基本目录和同步文件夹,再导入JEX文件即可。
RAW导出主要是为了方便其他MD软件访问。
- IOS连接不上
需要iOS设备安装证书使用https才能成功!详见下面的链接:
https://zhuanlan.zhihu.com/p/622510323
https://k.sina.cn/article_5953190046_162d6789e06701u6e4.html?from=tech&sinawapsharesource=newsapp&wm=3200_0025
### Devonthink
- bonjour connection
需要一些条件:
```
为了帮助阐明使用 Bonjour 的条件,并展示设置此类同步的简单步骤,以下是注意事项和要遵循的步骤。
要求
Bonjour 可用于在设备之间同步,如果:
这些设备位于同一网络上,请注意它无法通过 VPN 运行。
该网络是专用网络或允许 Bonjour 连接或非标准端口的网络。(公共和公司 WiFi 有时不允许这些。
您的防火墙或 Little Snitch 等应用程序已关闭或为 DEVONthink 的流量添加了例外。
我们的应用程序必须具有 Apple 强制要求的本地网络访问权限。
在 macOS Sequoia 上,您必须在“系统设置”>“隐私和安全”>“本地网络”中启用 DEVONthink。
在 iOS/iPadOS 上,在“设置”>“隐私和安全”>“本地网络”中启用 DEVONthink。
两台设备都处于打开状态并运行 DEVONthink / DEVONthink To Go(并且 DEVONthink To Go 必须处于活动状态,无论同步方法如何)。
注意:在可能不允许 Bonjour 流量的情况下,您可以通过标准 Lightning 数据线将 iOS 设备连接到 Mac,以创建用于 Bonjour 同步的临时网络。
如果您要使用 Mac 作为 Bonjour 服务器......
在服务器上 Mac...
在 DEVONthink......
首选项>同步> Bonjour 选项...
选中启用传入连接。
将端口留空,除非您有要分配的已知端口。
输入用于对连接设备进行身份验证的强制密码。
让 DEVONthink 运行。
在客户端 Mac 上...
在 DEVONthink...
在首选项>同步中,您应该会看到服务器 Mac 可用。
选中复选框以启用连接并输入您在服务器上指定的 Bonjour 密码 Mac。
在两台 Mac 上打开的数据库将显示在“本地”部分中。启用要合并和同步的那些。
未打开或可导入的数据库显示在“远程”部分中。双击数据库以导入它们,并将它们保存到主目录中的 ~/Databases 文件夹中。
在移动设备上...
在 DEVONthink To Go...
进入“设置”>“同步:位置”,然后按“编辑”链接(如果您已经启用了同步位置)。
您应该会看到 Mac 的同步位置。单击它旁边的绿色加号按钮。
根据您的选择设置选项,然后触摸保存。
输入您在 Mac 上输入的 Bonjour 密码。
连接后,触摸同步位置以显示数据库列表,然后拨动要导入的数据库旁边的开关。
上述情况是使用 Mac 和移动设备时最常见的情况。
如果您仅使用 iOS 或打算使用 DEVONthink To Go 作为 Bonjour 服务器......
在 DEVONthink To Go...
进入设置> Bonjour。
输入用于对连接设备进行身份验证的强制密码。
将端口留空,让 DEVONthink To Go 自行分配一个。
打开启用传入连接的开关。
然后,针对您使用的客户端类型(Mac 或移动设备)按照上述相应步骤作。
注意:虽然可以同时启用 DEVONthink 和 DEVONthink To Go 作为 Bonjour 服务器,但您不应将两者设置为同一数据库的服务器。
故障 排除
如果您在 Bonjour 同步时遇到问题,请按以下顺序检查这些内容......
检查窗口>登录 DEVONthink,并在 DEVONthink To Go 底部工具栏的同步图标上查找一个三角形。这些表示警告或错误。
如果没有报告任何问题,请重新检查本文开头的要求。不要理所当然地认为“什么都没有改变”。
如果这些内容得到验证,请尝试退出并在客户端和服务器设备上重新启动应用程序。
如果这不能解决问题,请尝试在充当 Bonjour 服务器的设备上更改 Bonjour 密码。然后点击客户端设备上的同步位置,查看系统是否提示您输入新密码。
如果这不能解决问题,请从客户端中删除同步位置。然后在服务器和客户端设备上退出并重新启动我们的应用程序。最后,在客户端设备上再次添加同步位置。
```
https://discourse.devontechnologies.com/t/switching-sync-method-to-bonjour/68950/4
设置好后,同步的双方都要打开enable bonjour,在Locations中就可以看到对方的标识,选中后再选需要下载的数据库,同样的,对方想要本方的数据库,也可以如上操作!
同步条件必须是双方都要开打enable设置,完成彼此的密码验证!
- webdav
这个地方有个坑:如果路径中有汉字,肯定OK按钮不能点击
另外,我的设备开了Clash代理,如果输入域名,webdav不能连通,关掉Clash,就可以正常完成webdav同步!
- Devonthink数据库概念
Inboxes全局:
每个设备都包含至少一个Inbox默认数据库,
Inbox+DB1+DB2
OB与DT双链非常方便本机阅读,如果同步到远端DT后,在远端DT是不能看到OB笔记内容的,只是一个链接,不同过去的是索引数据!
这种情况就没有必要做类似的OB的同步到另一台DT上阅读!
【😀提示】我新建的一个临时数据库,同步到远端mini后,如果用的还是OB的目录链接,在远端也是看不到的,在远端新建一个群和一个文本文件后,就正常看到内容了!
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,203 @@
---
title: "CentOS7安装TCP BBR加速_tcp加速脚本-CSDN博客"
source: "https://blog.csdn.net/weixin_41292299/article/details/112299913?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-112299913-blog-131889056.235^v43^pc_blog_bottom_relevance_base9&spm=1001.2101.3001.4242.2&utm_relevant_index=4"
author:
- "[[成就一亿技术人!]]"
- "[[hope_wisdom 发出的红包]]"
published:
created: 2025-12-01
description: "文章浏览阅读1.1k次。本文指导如何在CentOS 7系统中安装并启用Google的BBR拥塞控制算法,以优化服务器吞吐量和降低延迟,包括版本检查、脚本安装、验证设置和启动过程。"
tags:
- "clippings"
---
AI 搜索
## CentOS7安装TCP BBR加速
最新推荐文章于 2025-09-09 10:36:04 发布
原创 于 2021-01-06 23:16:33 发布 · 1.1k 阅读 · 2 ·
CC 4.0 BY-SA版权
版权声明:本文为博主原创文章,遵循 [CC 4.0 BY-SA](http://creativecommons.org/licenses/by-sa/4.0/) 版权协议,转载请附上原文出处链接和本声明。
文章标签:
[#linux](https://so.csdn.net/so/search/s.do?q=linux&t=all&o=vip&s=&l=&f=&viparticle=&from_tracking_code=tag_word&from_code=app_blog_art)
本文指导如何在CentOS 7系统中安装并启用Google的BBR拥塞控制算法,以优化服务器吞吐量和降低延迟,包括版本检查、脚本安装、验证设置和启动过程。
### CentOS7安装TCP BBR加速
BBRBottleneck Bandwidth and Round-trip propagation time)是 Google 提出的一种新型拥塞控制算法,可以使Linux服务器显著地提高 [吞吐量](https://so.csdn.net/so/search?q=%E5%90%9E%E5%90%90%E9%87%8F&spm=1001.2101.3001.7020) 和减少TCP连接的延迟。Google已经开源了该算法,并提交到了Linux内核,从4.9开始,Linux内核已经用上了该算法。
#### 查看当前Centos的版本
cat /etc/ [redhat](https://so.csdn.net/so/search?q=redhat&spm=1001.2101.3001.7020) -release
大于7.3即可
#### 执行一键安装脚本
[wget](https://so.csdn.net/so/search?q=wget&spm=1001.2101.3001.7020) --no- check -certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh &&./bbr.sh
耐心等待安装完毕
#### 安装完成后会提示重启系统
立即重启,输入:y ,等待重启完毕
![image](https://i-blog.csdnimg.cn/blog_migrate/9ea5a3fe1d490b468acad2f5d0dd9ad1.png)
#### 验证当前的TCP算法
\[root@hwsrv-781523 ~\]# sysctl net.ipv4.tcp\_available\_congestion\_control
net.ipv4.tcp\_available\_congestion\_control = bbr cubic reno
输出结果包含了:bbr 表示成功
#### 查看BBR是否启动
\[root@hwsrv-781523 ~\]# sysctl net.ipv4.tcp\_congestion\_control
net.ipv4.tcp\_congestion\_control = bbr
#### 查看BBR是否已经载入了系统模块
\[root@hwsrv-781523 ~\]# lsmod | grep bbr
tcp\_bbr 20480 32 [*Linux* 系统部署 *BBR* 服务器 *加速* 软件](https://blog.csdn.net/wangzongyu/article/details/131029859)
[背锅神童的博客](https://blog.csdn.net/wangzongyu)
06-29 4218[*BBR* *加速* 是种解决 *TCP* 拥堵的算法,由Google团队2016年推出,简单来说就是 *加速* 网络 *TCP* 传输协议的新算法,通过算法优化传输速度,避免路由堵塞现象的产生, *BBR* 利用瓶颈带宽和往返传播时间,被认为是迄今为止跨越不同路由发送数据的最快方法,当数据路由拥挤时,能够更有效地处理流量](https://blog.csdn.net/wangzongyu/article/details/131029859)[*centos* *7* 开启 *BBR* *加速*](https://blog.csdn.net/m0_57490668/article/details/115967076)
[SRE运维 网络 系统 安全](https://blog.csdn.net/m0_57490668)
04-21 903[*BBR* 主要解决两个问题 1、再有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路。 2、降低网络链路上的buffer占用率,从而降低延迟。非常适合慢速接入网络的用户。 项目地址:https://github.com/google/ *bbr* 1、升级内核: 开启 *BBR* 要求 4.10 以上版本 *Linux* 内核,查看当前内核版本: \[root@localhost ~\]# uname -r 3.10.0-514.el *7*.x86\_64 2、当前内核版本低于 4.10,可使用](https://blog.csdn.net/m0_57490668/article/details/115967076)[给服务器 *安装* *BBR* *加速* 网络传输速度\_ *bbr* *加速* *脚本*](https://blog.csdn.net/qq_60548077/article/details/130486634)
11-27[推荐使用以下 *安装* *脚本*,*安装* 内核并开启 *加速* 即可。 一、推荐 *脚本* bash<(curl -Lso- https://git.io/kernel.sh) 二、千影 *脚本* wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/ *Linux* -NetSpeed/master/ *tcp*.sh" chmod +x *tcp*.sh./ *tcp*.sh 提示:*安装* 内核后需要重启,重启前记得看看...](https://blog.csdn.net/qq_60548077/article/details/130486634)[...内核 *TCP* *加速* 算法 *BBR* Lotserver魔改版-一键 *安装* *脚本* 工具-支持...](https://download.csdn.net/download/weixin_43880734/90984923)
11-24[在这一背景下,出现了针对 *Linux* 内核 *TCP* *加速* 算法 *BBR* 的魔改版— *BBR* Lotserver。 *BBR* Lotserver的魔改版旨在进一步提高网络性能,特别是针对特定的操作系统版本,如 *Centos* 6、Debian *7* 和Ubuntu14等。这种魔改版可能会包含针对特定硬件和软件环境优化的代码,以实现更佳的网络性能。 为了简化 *BBR* Lotserver魔改版的 *安装* 和使用过程,开发出了...](https://download.csdn.net/download/weixin_43880734/90984923)[*linux* 开启 *bbr* *加速*](https://blog.csdn.net/yurisa_chan/article/details/151354773)
[
最新发布
](https://blog.csdn.net/yurisa_chan/article/details/151354773)
[yurisa\_chan的博客](https://blog.csdn.net/yurisa_chan)
09-09 151[*BBR* 要求 *Linux* 。2、临时开启,重启后失效。临时开启运行以下两个命令。](https://blog.csdn.net/yurisa_chan/article/details/151354773)[...*TCP* 拥塞控制技术 *TCP* - *BBR* 一键 *安装* *脚本* \_debian *安装* *bbr* 程序-CSDN博...](https://blog.csdn.net/wsyzxss/article/details/78740149)
10-31[本文提供了一键 *安装* *脚本*,适用于Debian/Ubuntu系统,帮助用户轻松 *安装* *TCP* - *BBR* 拥塞控制技术。 *脚本* 支持自定义内核版本,并包含详细的 *安装* 步骤与注意事项。 https://www.bbaaz.com/thread-22-1-1.html 注意:*TCP* - *BBR* 和锐速一样,不支持Openvz,查看本教程之前,请先确定你的VPS的虚拟化技术!](https://blog.csdn.net/wsyzxss/article/details/78740149)[防御SYN洪水攻击](https://blog.csdn.net/zkaipmoo/article/details/51967059)
11-28[本文介绍如何通过调整系统参数来有效防御SYN洪水攻击,包括将 *tcp* \_synack\_retries设置为0以 *加速* 回收半连接,并增大 *tcp* \_max\_syn\_backlog以容纳更多的连接请求。 调整系统参数挡攻击 第一个参数 *tcp* \_synack\_retries = 0是关键,表示回应第二个握手包(SYN+ACK包)给客户端IP后,如果收不到第三次握手包(ACK包)后,不进行...](https://blog.csdn.net/zkaipmoo/article/details/51967059)[*安装* *BBR* 教程,来 *加速* VPS](https://blog.csdn.net/u012241616/article/details/136606703)
[云博客\_资源宝分享](https://blog.csdn.net/u012241616)
03-10 3024[*安装* *BBR* 教程,来 *加速* VPS](https://blog.csdn.net/u012241616/article/details/136606703)[*CentOS* *7* 上 *安装* *BBR* *加速*](https://blog.csdn.net/wwwcomcn123/article/details/104475816)
[wwwcomcn123的专栏](https://blog.csdn.net/wwwcomcn123)
02-24 865[*CentOS* *7* 上 *安装* *BBR* *加速* 原文地址: *CentOS* *7* 上 *安装* *BBR* *加速*](https://blog.csdn.net/wwwcomcn123/article/details/104475816)[udpspeeder网络 *加速* 工具源码\_udpspeeder资源](https://download.csdn.net/download/mrtos001/10593874)
11-15[该代理插件支持 *Tcp* 、Udp通讯协议,支持市面所有游戏及进程代理 *加速* 支持WinXP至Win10所有Windows系统,兼容性超级好 格式:zip资源大小:1.3MB 宇宙 *加速* 器VC源代码(含驱动代码) 浏览:42 4星 · 用户满意度95% 用过宇宙 *加速* 器的人,应该知道这个是什么东西。 驱动技术很高深。 宇宙 *加速* 器VC源代码(含驱动代码)...](https://download.csdn.net/download/mrtos001/10593874)[*TCP* -TIMEOUT.rar\_ *tcp* timeo\_CFG *TCP* /IPTIMEOUT\_ *TCP* 超时\_超时三次...](https://download.csdn.net/download/weixin_42656416/86637845)
11-28[...理解\` *tcp* \_recvmsg\`的内部实现有助于更深入地掌握 *TCP* /IP协议栈的工作原理及其实现细节。 格式:doc资源大小:*7* 2.5KB页数:11 date-timeout-interval:一个简单的npm计时包。 https 浏览:151 *安装* 方式运行npm install --save date-timeout-interval用法将该库导入到您的 *脚本* 中,如下所示: const {Timeout, Interval...](https://download.csdn.net/download/weixin_42656416/86637845)[*Linux* 手动 *安装* *BBR* *加速* 器( *TCP* *加速* 器)](https://blog.csdn.net/weixin_44082342/article/details/126624911)
[柠木的博客](https://blog.csdn.net/weixin_44082342)
09-05 4294[*Linux* 手动 *安装* *BBR* *加速* 器( *TCP* *加速* 器)](https://blog.csdn.net/weixin_44082342/article/details/126624911)[*CentOS* *7* *安装* *BBR* 教程](https://blog.csdn.net/qq_43550613/article/details/83512518)
[
热门推荐
](https://blog.csdn.net/qq_43550613/article/details/83512518)
[ronikimi的博客](https://blog.csdn.net/qq_43550613)
10-30 1万+[自Google于2016年9月宣布将 *BBR* 开源起,世界各国的极客们就开始研究了,对于常年受制于特殊网络环境下的我国民众,长期都在寻找各种提速的方法。对于 *bbr* 而言,通俗来讲就是对 *Linux* 内核 *TCP* 协议的优化从而达到提速的目的。但是注意的是,1) *bbr* 不能改变地理位置的限制,也就是说他不会改变网络的线路,该绕还是绕;2) *安装* 和开启 *bbr* 往往要更新内核,因此对于VPS而言,推荐选择KVM构架。本文将...](https://blog.csdn.net/qq_43550613/article/details/83512518)[*centos* *7* 开启 *bbr* *加速* 黑科技](https://blog.csdn.net/wyongqing/article/details/84476230)
[妙音](https://blog.csdn.net/wyongqing)
11-25 1577[*BBR* 通过优化和控制 *TCP* 的拥塞,充分利用带宽并降低延迟,起到神奇的 *加速* 效果。 测试环境 *centos* *7*.5 *加速* 效果,没有那么跨张,但是下载从50K *加速* 到400K 下载更换内核 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release- *7*...](https://blog.csdn.net/wyongqing/article/details/84476230)[*CentOS* *7* 开启 *BBR* *加速*](https://blog.csdn.net/NOOBYY/article/details/90903200)
[NOOBYY的博客](https://blog.csdn.net/NOOBYY)
06-05 9956[Google *BBR* 是一款免费开源的 *TCP* 拥塞控制传输控制协议, 可以使 *Linux* 服务器显著提高吞吐量和减少 *TCP* 连接的延迟。 Step1 1、yum系统更新 yum update 2、查看系统版本 cat /etc/redhat-release 输出如下则表示已升级到 *7*.6 *CentOS* *Linux* release *7*.6.1810 (Core) 3、 *安装* elrepo并升级内核 r...](https://blog.csdn.net/NOOBYY/article/details/90903200)[*centos* *7* *安装* *bbr* *加速*](https://wenku.csdn.net/answer/21hwozta93)
03-19[在 *CentOS* *7* 中,首先需要验证内核版本是否支持 *TCP* *BBR* 。通过运行以下命令检查当前系统的内核版本: \`\`\`bash uname -r \`\`\` 如果内核版本低于 \`4.9\`,则不支持原生的 *TCP* *BBR* 功能\[^1\]。 #### 开启模块加载 为了...](https://wenku.csdn.net/answer/21hwozta93)[给服务器 *安装* *BBR* *加速* 网络传输速度](https://devpress.csdn.net/v1/article/detail/130486634)
[qq\_60548077的博客](https://blog.csdn.net/qq_60548077)
05-04 1610[*BBR* 是Google开源的一种 *TCP* 网络拥塞优化算法,开启 *BBR* 可以对你网站访问速度起到一定的优化。提示: *安装* 内核后需要重启,重启前记得看看内核是否已经 *安装* 上了,重启后再执行一次 *脚本* 开启 *加速* 。可前往Github、Gitee等获取,个人不建议使用百度上面的 *脚本* 。推荐使用以下 *安装* *脚本* , *安装* 内核并开启 *加速* 即可。](https://devpress.csdn.net/v1/article/detail/130486634)[什么是 *BBR*](https://blog.csdn.net/cwtxyi/article/details/120113229)
[地推日记](https://blog.csdn.net/cwtxyi)
09-05 3531[谷歌开发出了一种 *加速* 网络传输协议 *TCP* 的新算法,这种算法通过优化传输速度,避免路由堵塞现象的产生。 *BBR* 利用瓶颈带宽和往返传播时间,被认为是迄今为止跨越不同路由发送数据的最快方法,当数据路由拥挤时,能够更有效地处理流量。目前 Google 已经将 *BBR* 投入 YouTube 使用。有消息透露, *BBR* 通过优化使 YouTube 流量平均增长了 4%,在其他一些方面则达到了 14%。 Google *BBR* *TCP* 拥堵算法 什么是 *TCP* *TCP* 始于 19 *7* 0 年,作为协议套件的一部分, TC](https://blog.csdn.net/cwtxyi/article/details/120113229)[*BBR* *加速*](https://blog.csdn.net/qq_35081500/article/details/107718700)
[Lv骚年](https://blog.csdn.net/qq_35081500)
07-31 1308[依次执行如下三行代码,下载一键 *安装* *脚本* ->赋予执行权限->执行 *脚本* wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/ *Linux* -NetSpeed/master/ *tcp*.sh" chmod +x *tcp*.sh./ *tcp*.sh 选择 *7*](https://blog.csdn.net/qq_35081500/article/details/107718700)[国外 *centos* 服务器 *安装* *BBR* /锐速一键 *加速* *脚本*](https://devpress.csdn.net/v1/article/detail/143024894)
[2401\_85199215的博客](https://blog.csdn.net/2401_85199215)
10-17 1273[*BBR* 目的是要尽量跑满带宽,并且尽量不要有排队的情况。如果如上图显示:-bash: wget: command not found 请先执行一下代码 *安装* wegt后再执行 *脚本* 。一直到出现重启提示,输入字母:y,然后回车,等待服务器重启完成后,再执行本教程顶部的 *脚本* 。这里推荐 *安装* *BBR* plus内核,输入数字键:2,然后回车,等待命令执行。开启 *BBR* *加速* 也非常简单,这边提供了可用的一键 *安装* *脚本* 。最后会显示 *BBR* plus启动成功的字样,即可正常使用了。输入数字键: *7* ,然后回车,等待命令执行。](https://devpress.csdn.net/v1/article/detail/143024894)[介绍在 *CentOS* *7* 上部署 *BBR* 的详细过程](https://blog.csdn.net/desertworm/article/details/116759380)
[伊森日志](https://blog.csdn.net/desertworm)
05-14 1490[介绍在 *CentOS* *7* 上部署 *BBR* 的详细过程 *BBR* 简介:(Bottleneck Bandwidth and RTT)是一种新的拥塞控制算法,由Google开发。有了 *BBR* , *Linux* 服务器可以显着提高吞吐量并减少连接延迟 ROOT登陆后,终端执行以下命令 1.查看当前内核版本 uname -r 显示当前内核为3.10.0,因此我们需要更新内核 2.使用ELRepo RPM仓库升级内核 rpm --import https://www.elrepo.org/RPM-GPG-KEY-...](https://blog.csdn.net/desertworm/article/details/116759380)[*TCP* *BBR* - 如何 *安装* 、启动、停止 *BBR* !](https://blog.csdn.net/weixin_30920597/article/details/94787201)
[weixin\_30920597的博客](https://blog.csdn.net/weixin_30920597)
08-23 529[*TCP* *BBR* 从 *Linux* 4.9 内核开始,就作为它内核的一部分存在了,如果想使用 *BBR* ,那么首先就是判断内核版本是否大于4.9,如果符合版本标准,那么直接启动 *BBR* 就可以了,如果低于4.9,升级内核之后启动就行了。 一,使用一键 *脚本* *安装* 和启动 *BBR* 。 推荐使用秋水逸冰的一键 *脚本* ,具体可以参考: https://www.cnblogs.com/sunylat/p...](https://blog.csdn.net/weixin_30920597/article/details/94787201)[揭秘 *BBR* *加速* ,以及如何在服务器上 *安装* *BBR* 以优化访问速度](https://devpress.csdn.net/v1/article/detail/131889056)
[技术博客](https://blog.csdn.net/yangxiao_hui)
07-24 9081[本文介绍了 *BBR* *加速* ,一项由Google团队开发的 *TCP* 拥塞控制技术。我们了解了 *BBR* *加速* 的重要性以及其在提高网站响应速度和网络传输效率方面的优势。针对Ubuntu系统,我们提供了 *安装* *BBR* *加速* 的简明步骤,并强调了注意事项。如果您想提升网站的用户体验和网络传输性能, *BBR* *加速* 是一个值得尝试的有效技术。](https://devpress.csdn.net/v1/article/detail/131889056)
评论
被折叠的 0 条评论 [为什么被折叠?](https://blogdev.blog.csdn.net/article/details/122245662)[到【灌水乐园】发言](https://bbs.csdn.net/forums/FreeZone)
添加红包
实付 元
[使用余额支付](https://blog.csdn.net/weixin_41292299/article/details/)
点击重新获取
扫码支付
钱包余额 0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
[余额充值](https://i.csdn.net/#/wallet/balance/recharge)
举报
[![](https://i-operation.csdnimg.cn/images/df6c67fa661c48eba86beaeb64350df0.gif)](https://mall.csdn.net/vip?utm_source=25618_vip_blogrighticon)
[AI 搜索](https://ai.csdn.net/chat/?utm_source=cknow_pc_blog_right_hover) [智能体](https://ai.csdn.net/chat/cmd?utm_source=cknow_pc_blog_right_hover) [AI 编程](https://ai.csdn.net/chat/coding?utm_source=cknow_pc_blog_right_hover) [AI 作业助手](https://ai.csdn.net/chat/homework?utm_source=cknow_pc_blog_right_hover)
隐藏侧栏 ![程序员都在用的中文IT技术交流社区](https://g.csdnimg.cn/side-toolbar/3.6/images/qr_app.png)
程序员都在用的中文IT技术交流社区
![专业的中文 IT 技术社区,与千万技术人共成长](https://g.csdnimg.cn/side-toolbar/3.6/images/qr_wechat.png)
专业的中文 IT 技术社区,与千万技术人共成长
![关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!](https://g.csdnimg.cn/side-toolbar/3.6/images/qr_video.png)
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!
客服 返回顶部
![](https://i-blog.csdnimg.cn/blog_migrate/9ea5a3fe1d490b468acad2f5d0dd9ad1.png)
@@ -0,0 +1,149 @@
---
title: "networkQualitymacOS 中隐藏的网络测试工具(命令行)"
source: "https://www.sysgeek.cn/macos-networkquality/"
author:
- "[[海猴子]]"
published: 2023-12-18
created: 2025-12-02
description: "掌握 macOS 中隐藏的 networkQuality 命令,优化你的网络连接,提升连接速度。详解网络性能测试和诊断。"
tags:
- "clippings"
---
![](https://img.sysgeek.cn/img/logo/macos/macos-13.jpg)
![macOS](https://img.sysgeek.cn/img/logo/macos/macos-13.jpg)
这里,我们有一个有趣而强大的工具,即 macOS 12 Monterey 及其更新版本中引入的 `networkQuality` 命令。它被用于评估网络质量和诊断潜在的网络问题,主要关注上传下载速度以及网络的响应能力。
## 运行默认测试
如果你想利用 Network Quality 工具进行测试,只需打开 macOS 中的「终端」应用程序并输入以下命令:
** 复制 ** 复制 ** 复制 ** 复制 ** 复制 ** 复制
** 复制
```
networkQuality -v
```
执行此命令将触发一系列默认测试,并将结果直观地展示在「终端」窗口中。
![networkQuality 测试结果](https://img.sysgeek.cn/img/2023/12/macos-networkquality.png)
networkQuality 测试结果
| 指标 | 单位 | 说明 |
| --- | --- | --- |
| Plink capacity | Mbps | 上行速度 |
| Downlink capacity | Mbps | 下行速度 |
| Uplink bytes transferred | 字节 | 上行传输的字节数 |
| Downlink bytes transferred | 字节 | 下行传输的字节数 |
| Uplink Flow count | 次 | 上行流量计数 |
| Downlink Flow count | 次 | 下行流量计数 |
| Idle Latency | 毫秒 | 空闲延迟 |
| Responsiveness | RPM | 响应数 |
RPM 表示每分钟往返次数。响应数越高,表示网络的响应能力越好。
## Private Relay 测试
除了基本功能外,Network Quality 工具还为 Apple 的 Private Relay 提供支持。Private Relay 是一项功能强大的服务,通过两个独立的服务器对所有网络流量进行加密和路由,以提供额外的隐私和安全性。要在工具中启用 Private Relay,只需在命令中添加 `-p` 开关:
** 复制 ** 复制 ** 复制 ** 复制 ** 复制
** 复制
```
networkQuality -v -p
```
## 自定义配置
为了满足个性化需求,你可以根据具体情况自定义 Network Quality 工具的配置。默认情况下,工具通过 `https://mensura.cdn-apple.com/api/v1/gm/config` 从 Apple 获取配置文件。但你可以通过使用 `-C` 参数指定不同的配置 URL 来进行自定义。
Apple 的默认配置如下:
** 复制 ** 复制 ** 复制 ** 复制
** 复制
```
{ "version": 1,
"test_endpoint": "hkhkg3-edge-bx-014.aaplimg.com",
"urls": {
"small_https_download_url": "https://mensura.cdn-apple.com/api/v1/gm/small",
"large_https_download_url": "https://mensura.cdn-apple.com/api/v1/gm/large",
"https_upload_url": "https://mensura.cdn-apple.com/api/v1/gm/slurp",
"small_download_url": "https://mensura.cdn-apple.com/api/v1/gm/small",
"large_download_url": "https://mensura.cdn-apple.com/api/v1/gm/large",
"upload_url": "https://mensura.cdn-apple.com/api/v1/gm/slurp"
}
}
```
需要注意的是,Apple 的 `test_endpoint` 在请求时可能会变更,会选择一个就近的(不同)服务器,从而减少延迟并分散服务器负载。
比如,如果你有一个位于 `https://networkquality.example.com/config` 的自定义配置文件,可以通过以下命令运行 Network Quality 工具,来使用自定义配置:
** 复制 ** 复制 ** 复制
** 复制
```
networkQuality -v -C https://networkquality.example.com/config
```
通过这个命令,工具将按照自定义配置文件中指定的设置执行测试。要为 Network Quality 工具建立自己的测试服务器,可以在项目的 [GitHub 页面](https://github.com/network-quality/goserver) 上找到详细的文档。
## networkQuality 命令参数
** 复制 ** 复制
** 复制
```
USAGE: networkQuality [-C <configuration_url>] [-c] [-d] [-f <comma-separated list>] [-h] [-I <network interface name>] [-k] [-p] [-r host] [-S <port>] [-s] [-u] [-v]
-C: Override Configuration URL or path (with scheme file://)
-c: Produce computer-readable output
-d: Do not run a download test (implies -s)
-f: <comma-separated list>: Enforce Protocol selections. Available options:
h1: Force-enable HTTP/1.1
h2: Force-enable HTTP/2
h3: Force-enable HTTP/3 (QUIC)
L4S: Force-enable L4S
noL4S: Force-disable L4S
-h: Show help (this message)
-I: Bind test to interface (e.g., en0, pdp_ip0,...)
-k: Disable certificate validation
-p: Use iCloud Private Relay
-r: Connect to host or IP, overriding DNS for initial config request
-S: Start and run server on specified port. Other specified options ignored
-s: Run tests sequentially instead of parallel upload/download
-u: Do not run an upload test (implies -s)
-v: Verbose output
```
---
macOS 中的 `networkQuality` 工具是一款强大的命令行实用程序,专注于测量网络连接性能。它不仅可以用于常规网络测试,还支持通过 Apple Private Relay 进行测试而无需购买 iCloud+ 服务,这是一个很方便的功能。
相关资源:
- [networkQuality Wiki](https://github.com/network-quality/community/wiki)
- [PPM 响应性草案 RFC](https://www.ietf.org/archive/id/draft-cpaasch-ippm-responsiveness-00.html)
[** 赞(1)](https://www.sysgeek.cn/macos-networkquality/)
分享到 [**](https://www.sysgeek.cn/macos-networkquality/ "分享到微信") **
### 相关推荐
- [![macOS Tahoe 26.1 发布:新增「液态玻璃」色调模式-系统极客](https://img.sysgeek.cn/img/2025/06/macos-26.jpg)](https://www.sysgeek.cn/macos-tahoe-26-1/) [macOS Tahoe 26.1 发布:新增「液态玻璃」色调模式](https://www.sysgeek.cn/macos-tahoe-26-1/)
- [![macOS Tahoe 26.0.1 发布,修复 M3 Ultra 无法安装的问题-系统极客](https://img.sysgeek.cn/img/2025/06/macos-26.jpg)](https://www.sysgeek.cn/macos-tahoe-26-0-1/) [macOS Tahoe 26.0.1 发布,修复 M3 Ultra 无法安装的问题](https://www.sysgeek.cn/macos-tahoe-26-0-1/)
- [![10+ macOS Tahoe 26 全新设置,值得你的关注与调校-系统极客](https://img.sysgeek.cn/img/2025/06/macos-26.jpg)](https://www.sysgeek.cn/macos-tahoe-26-new-settings/) [10+ macOS Tahoe 26 全新设置,值得你的关注与调校](https://www.sysgeek.cn/macos-tahoe-26-new-settings/)
- [![macOS Sequoia 15.6.1 发布,修复已被利用的高危漏洞-系统极客](https://img.sysgeek.cn/img/2024/06/macos-13.jpg)](https://www.sysgeek.cn/macos-sequoia-15-6-1/) [macOS Sequoia 15.6.1 发布,修复已被利用的高危漏洞](https://www.sysgeek.cn/macos-sequoia-15-6-1/)
- [![macOS Sequoia 15.6 发布,修复 81 项安全问题-系统极客](https://img.sysgeek.cn/img/2024/06/macos-13.jpg)](https://www.sysgeek.cn/macos-sequoia-15-6/) [macOS Sequoia 15.6 发布,修复 81 项安全问题](https://www.sysgeek.cn/macos-sequoia-15-6/)
- [![Apple Container:苹果容器化框架简介-系统极客](https://img.sysgeek.cn/img/logo/macos/macos-17.jpg)](https://www.sysgeek.cn/apple-container/) [Apple Container:苹果容器化框架简介](https://www.sysgeek.cn/apple-container/)
- [![macOS 26 Tahoe 桌面壁纸下载(4K/6K 高清官方壁纸)-系统极客](https://img.sysgeek.cn/img/2025/06/macos-26.jpg)](https://www.sysgeek.cn/macos-tahoe-wallpaper/) [macOS 26 Tahoe 桌面壁纸下载(4K/6K 高清官方壁纸)](https://www.sysgeek.cn/macos-tahoe-wallpaper/)
- [![iOS、iPadOS 和 macOS 26 支持机型列表:哪些设备可以升级?-系统极客](https://img.sysgeek.cn/img/logo/macos/macos-17.jpg)](https://www.sysgeek.cn/ios-26-ipados-26-macos-26-compatibility-list/) [iOS、iPadOS 和 macOS 26 支持机型列表:哪些设备可以升级?](https://www.sysgeek.cn/ios-26-ipados-26-macos-26-compatibility-list/)
- [首页](https://www.sysgeek.cn/)
- [新闻](https://www.sysgeek.cn/news/)
- [macOS](https://www.sysgeek.cn/macos/)
- [专题](https://www.sysgeek.cn/topic/)
@@ -0,0 +1,277 @@
---
title: "搬瓦工VPS开通后安装BBR教程,服务器开启加速网络优化 - 搬瓦工中文版"
source: "https://www.bwger.com/article/56.html"
author:
published:
created: 2025-12-01
description: "搬瓦工VPS开通后安装BBR教程,服务器开启加速网络优化"
tags:
- "clippings"
---
### 当前位置:首页 > 技术教程 » 正文
BBRBottleneck Bandwidth and Round-trip propagation time)是 Google 提供的一种新型拥塞控制算法。它能显著提高 Linux 服务器的网络吞吐量,同时有效降低 TCP 连接延迟,从而大幅度改善网络传输性能。
目前主流的 Linux 系统,如 CentOS 8、Debian、Ubuntu 等新版系统,通常已经内置 BBR,只需简单配置即可开启。而部分较早的系统版本则需要手动升级内核后再启用。下面将分步骤介绍不同系统下的开启方法。
**一、CentOS 8 / Debian / Ubuntu 开启 BBR**
这类系统的默认内核版本通常高于 4.9,因此无需额外升级内核,只需执行以下命令即可启用:
```bash
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
```
执行完毕后,通过以下命令验证是否启用成功:
```perl
lsmod | grep bbr
```
如果输出结果中包含类似以下内容:
```bash
tcp_bbr 20480 0
```
则说明 Google BBR 已成功启用。
**二、CentOS 7 升级内核并开启 BBR**
CentOS 7 默认内核版本一般低于 4.9,无法直接启用 BBR,需要先升级内核。推荐使用一键脚本方式:
```ruby
yum install wget -y
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
chmod +x bbr.sh
./bbr.sh
```
脚本运行完成后,重启服务器,同样再次执行:
```perl
lsmod | grep bbr
```
如果输出结果中包含类似以下内容:
```bash
tcp_bbr 20480 0
```
则表示 BBR 加速已经配置成功。
**三、开启 BBR 作用与效果:**
充分利用带宽:最大化利用服务器所在网络的瓶颈带宽,不浪费传输能力。
减少网络排队:通过智能调度算法降低延迟,避免传统算法中因排队导致的拥堵。
提升传输效率:尤其适合跨境、长距离网络环境,可以显著改善 TCP 连接速度。
通俗来讲,BBR 就是让你的服务器“跑满带宽”,在复杂的网络环境下也能保持高速、低延迟,几乎将网络传输能力压榨到极致。
**四、BBR 安装方法教程总结:**
无论是 CentOS 7 通过升级内核安装 BBR,还是 CentOS 8 / Debian / Ubuntu 直接启用 BBR,配置步骤都非常简单。开启 BBR 后,能显著提升服务器的网络性能,是优化加速服务器网络最有效、最直接的方式之一。
**【购机教程】** 搬瓦工英文网页不会购买?购买VPS的流程是什么?不知道怎么支付?能不能用支付宝?具体请查看搬瓦工购机教程攻略,超简单!新手小白也能看的懂!==> [直达链接](https://www.bwger.com/doc/)
温馨提醒 若有选择困难症,直接选中间推荐方案,记得使用搬瓦工全系通用优惠码:BWHCGLUKKB (-6.77%)
- 2核 CPU
- 1GB 内存
- 20GB SSD 硬盘
- 1000GB 月流量
- 1Gbps 带宽
- DC2/DC8/多机房
- $49.99/年,年付入门款
- **基础套餐,入门首选,速度够用**
- 2核 CPU
- 1GB 内存
- 20GB SSD 硬盘
- 1000GB 月流量
- 2.5Gbps 带宽
- DC6/DC9/软银/多机房
- $49.99/季度,$169.99/年
- **首选推荐,三网直连,速度超快**
- 2核 CPU
- 2GB 内存
- 40GB SSD 硬盘
- 500GB 月流量
- 1Gbps 带宽
- 香港CN2 GIA专线机房
- $89.99/月,$899.99/年
- **土豪专属,最顶路线,绝对好用**
**A、美国 CN2 GIA 首选( 推荐套餐 ):**
美西洛杉矶 CN2 GIA 20GB
- CPU2 核
- 内存:1 GB
- 硬盘:20 GB SSD
- 流量:1000 GB/月
- 带宽:2.5 Gbps
- 机房:DC6 DC9 CN2 GIA、日本软银
- 迁移:可迁移至其他机房,流量不变化
- 价格:49.99 美元/季度,169.99 美元/年
[直达通道(美国 CN2 GIA 20GB](https://www.bwger.com/link/87/)
美西洛杉矶 CN2 GIA 40GB
- CPU3 核
- 内存:2 GB
- 硬盘:40 GB SSD
- 流量:2000 GB/月
- 带宽:2.5 Gbps
- 机房:DC6 DC9 CN2 GIA、日本软银
- 迁移:可迁移至其他机房,流量不变化
- 价格:89.99 美元/季度,299.99 美元/年
[直达通道(美国 CN2 GIA 40GB](https://www.bwger.com/link/88/)
**B** **、美国 CN2 GIA 方案(高端套餐):**
美西洛杉矶 CN2 GIA 80GB
- CPU4 核
- 内存:4 GB
- 硬盘:80 GB SSD
- 流量:3000 GB/月
- 带宽:2.5 Gbps
- 机房:DC6 DC9 CN2 GIA、日本软银
- 迁移:可迁移至其他机房,流量不变化
- 价格:149.99 美元/季度,549.99 美元/年
[直达通道(美国 CN2 GIA 80GB](https://www.bwger.com/link/89/)
美西洛杉矶 CN2 GIA 160GB
- CPU6 核
- 内存:8 GB
- 硬盘:160 GB SSD
- 流量:5000 GB/月
- 带宽:5 Gbps
- 机房:DC6 DC9 CN2 GIA、日本软银
- 迁移:可迁移至其他机房,流量不变化
- 价格:239.99 美元/季度,879.99 美元/年
[直达通道(美国 CN2 GIA 160GB](https://www.bwger.com/link/90/)
**C、日本 CN2 GIA 首选( 推荐套餐 ):**
日本大阪 CN2 GIA 40GB
- CPU2 核
- 内存:2 GB
- 硬盘:40 GB SSD
- 流量:500 GB/月
- 带宽:1.5 Gbps
- 机房:日本大阪 CN2 GIA
- 迁移:亚洲顶级路线,不可迁移机房
- 价格:49.99 美元/月,499.99 美元/年
[直达通道(大阪 CN2 GIA 40GB](https://www.bwger.com/link/134/)
日本东京 CN2 GIA 40GB
- CPU2 核
- 内存:2 GB
- 硬盘:40 GB SSD
- 流量:500 GB/月
- 带宽:1.2 Gbps
- 机房:日本东京 CN2 GIA
- 迁移:亚洲顶级路线,不可迁移机房
- 价格:89.99 美元/月,899.99 美元/年
[直达通道(东京 CN2 GIA 40GB](https://www.bwger.com/link/108/)
**D** **、日本 CN2 GIA 方案(高端套餐):**
日本大阪 CN2 GIA 80GB
- CPU4 核
- 内存:4 GB
- 硬盘:80 GB SSD
- 流量:1000 GB/月
- 带宽:1.5 Gbps
- 机房:日本大阪 CN2 GIA
- 迁移:亚洲顶级路线,不可迁移机房
- 价格:86.99 美元/月,869.99 美元/年
[直达通道(大阪 CN2 GIA 80GB](https://www.bwger.com/link/135/)
日本东京 CN2 GIA 80GB
- CPU4 核
- 内存:4 GB
- 硬盘:80 GB SSD
- 流量:1000 GB/月
- 带宽:1.2 Gbps
- 机房:日本东京 CN2 GIA
- 迁移:亚洲顶级路线,不可迁移机房
- 价格:155.99 美元/月,1559.99 美元/年
[直达通道(东京 CN2 GIA 80GB](https://www.bwger.com/link/109/)
**E、香港 CN2 GIA 首选( 推荐套餐 ):**
中国香港 CN2 GIA 40GB
- CPU2 核
- 内存:2 GB
- 硬盘:40 GB SSD
- 流量:500 GB/月
- 带宽:1 Gbps
- 机房:中国香港 CN2 GIA
- 迁移:最顶级路线,不可迁移机房
- 价格:89.99 美元/月,899.99 美元/年
[直达通道(香港 CN2 GIA 40GB](https://www.bwger.com/link/95/)
中国香港 CN2 GIA 80GB
- CPU4 核
- 内存:4 GB
- 硬盘:80 GB SSD
- 流量:1000 GB/月
- 带宽:1 Gbps
- 机房:中国香港 CN2 GIA
- 迁移:最顶级路线,不可迁移机房
- 价格:155.99 美元/月,1559.99 美元/年
[直达通道(香港 CN2 GIA 80GB](https://www.bwger.com/link/96/)
**F** **、香港 CN2 GIA 方案(高端套餐):**
中国香港 CN2 GIA 160GB
- CPU6 核
- 内存:8 GB
- 硬盘:160 GB SSD
- 流量:2000 GB/月
- 带宽:1 Gbps
- 机房:中国香港 CN2 GIA
- 迁移:最顶级路线,不可迁移机房
- 价格:299.99 美元/月,2999.99 美元/年
[直达通道(香港 CN2 GIA 160GB](https://www.bwger.com/link/97/)
中国香港 CN2 GIA 320GB
- CPU8 核
- 内存:16 GB
- 硬盘:320 GB SSD
- 流量:4000 GB/月
- 带宽:1 Gbps
- 机房:中国香港 CN2 GIA
- 迁移:最顶级路线,不可迁移机房
- 价格:589.99 美元/月,5899.99 美元/年
[直达通道(香港 CN2 GIA 320GB](https://www.bwger.com/link/98/)
<table><thead><tr><th colspan="6">搬瓦工标准 KVM VPS 入门套餐</th></tr><tr><th>内存</th><th>CPU</th><th>硬盘</th><th>流量</th><th>带宽</th><th>购买</th></tr></thead><tbody><tr><td>1GB</td><td>2核</td><td>20GB</td><td>1TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/44/">购买</a></td></tr><tr><td>2GB</td><td>3核</td><td>40GB</td><td>2TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/45/">购买</a></td></tr><tr><td>4GB</td><td>4核</td><td>80GB</td><td>3TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/46/">购买</a></td></tr><tr><td>8GB</td><td>5核</td><td>160GB</td><td>4TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/47/">购买</a></td></tr><tr><td>16GB</td><td>6核</td><td>320GB</td><td>5TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/48/">购买</a></td></tr><tr><td>24GB</td><td>7核</td><td>480GB</td><td>6TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/49/">购买</a></td></tr></tbody></table>
<table><thead><tr><th colspan="6">美国洛杉矶 LA CN2 GIA 推荐套餐</th></tr><tr><th>内存</th><th>CPU</th><th>硬盘</th><th>流量</th><th>带宽</th><th>购买</th></tr></thead><tbody><tr><td>1GB</td><td>2核</td><td>20GB</td><td>1TB</td><td>2.5Gbps</td><td><a href="https://www.bwger.com/link/87/">购买</a></td></tr><tr><td>2GB</td><td>3核</td><td>40GB</td><td>2TB</td><td>2.5Gbps</td><td><a href="https://www.bwger.com/link/88/">购买</a></td></tr><tr><td>4GB</td><td>4核</td><td>80GB</td><td>3TB</td><td>2.5Gbps</td><td><a href="https://www.bwger.com/link/89/">购买</a></td></tr><tr><td>8GB</td><td>6核</td><td>160GB</td><td>5TB</td><td>5Gbps</td><td><a href="https://www.bwger.com/link/90/">购买</a></td></tr><tr><td>16GB</td><td>8核</td><td>320GB</td><td>8TB</td><td>5Gbps</td><td><a href="https://www.bwger.com/link/91/">购买</a></td></tr><tr><td>32GB</td><td>10核</td><td>640GB</td><td>10TB</td><td>10Gbps</td><td><a href="https://www.bwger.com/link/92/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>12TB</td><td>10Gbps</td><td><a href="https://www.bwger.com/link/93/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>15TB</td><td>10Gbps</td><td><a href="https://www.bwger.com/link/160/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>20TB</td><td>10Gbps</td><td><a href="https://www.bwger.com/link/161/">购买</a></td></tr><tr><td>64GB</td><td>24核</td><td>1280GB</td><td>12TB</td><td>10Gbps</td><td><a href="https://www.bwger.com/link/148/">购买</a></td></tr></tbody></table>
<table><thead><tr><th colspan="6">日本大阪 OSAKA CN2 GIA 高端套餐</th></tr><tr><th>内存</th><th>CPU</th><th>硬盘</th><th>流量</th><th>带宽</th><th>购买</th></tr></thead><tbody><tr><td>2GB</td><td>2核</td><td>40GB</td><td>0.5TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/134/">购买</a></td></tr><tr><td>4GB</td><td>4核</td><td>80GB</td><td>1TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/135/">购买</a></td></tr><tr><td>8GB</td><td>6核</td><td>160GB</td><td>2TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/136/">购买</a></td></tr><tr><td>16GB</td><td>8核</td><td>320GB</td><td>4TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/137/">购买</a></td></tr><tr><td>32GB</td><td>10核</td><td>640GB</td><td>6TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/138/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>8TB</td><td>1.5Gbps</td><td><a href="https://www.bwger.com/link/139/">购买</a></td></tr></tbody></table>
<table><thead><tr><th colspan="6">日本东京 TOKYO CN2 GIA 顶级套餐</th></tr><tr><th>内存</th><th>CPU</th><th>硬盘</th><th>流量</th><th>带宽</th><th>购买</th></tr></thead><tbody><tr><td>2GB</td><td>2核</td><td>40GB</td><td>0.5TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/108/">购买</a></td></tr><tr><td>4GB</td><td>4核</td><td>80GB</td><td>1TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/109/">购买</a></td></tr><tr><td>8GB</td><td>6核</td><td>160GB</td><td>2TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/110/">购买</a></td></tr><tr><td>16GB</td><td>8核</td><td>320GB</td><td>4TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/111/">购买</a></td></tr><tr><td>32GB</td><td>10核</td><td>640GB</td><td>6TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/123/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>8TB</td><td>1.2Gbps</td><td><a href="https://www.bwger.com/link/125/">购买</a></td></tr></tbody></table>
<table><thead><tr><th colspan="6">中国香港 HONG KONG CN2 GIA 顶级套餐</th></tr><tr><th>内存</th><th>CPU</th><th>硬盘</th><th>流量</th><th>带宽</th><th>购买</th></tr></thead><tbody><tr><td>2GB</td><td>2核</td><td>40GB</td><td>0.5TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/95/">购买</a></td></tr><tr><td>4GB</td><td>4核</td><td>80GB</td><td>1TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/96/">购买</a></td></tr><tr><td>8GB</td><td>6核</td><td>160GB</td><td>2TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/97/">购买</a></td></tr><tr><td>16GB</td><td>8核</td><td>320GB</td><td>4TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/98/">购买</a></td></tr><tr><td>32GB</td><td>10核</td><td>640GB</td><td>6TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/122/">购买</a></td></tr><tr><td>64GB</td><td>12核</td><td>1280GB</td><td>8TB</td><td>1Gbps</td><td><a href="https://www.bwger.com/link/124/">购买</a></td></tr></tbody></table>
@@ -0,0 +1,256 @@
![](https://developer.qcloudimg.com/http-save/yehe-3597170/25f2db33ae7d74d82830e2ed18d7ce3c.jpg)
机房内的蓝光
昨天又有客户问我,说他们的应用突然变慢了,怀疑是网络问题。我问他网络带宽多少,他说不知道...这种情况我见得太多了,很多人遇到网络问题就是一脸懵,完全不知道从哪里下手。
其实测网络带宽这个事情,我刚开始做运维的时候也是摸着石头过河。记得有一次领导问我们机房的带宽利用率怎么样,我愣是说不出个所以然来,那个尴尬啊...从那以后我就下定决心要把这些基本功练扎实。
今天就来分享一下我这些年积累的Linux网络带宽测试经验,保证让你以后遇到网络问题不再抓瞎。
### **speedtest-cli - 最简单粗暴的方法**
说到测带宽,我第一个想到的就是speedtest-cli。这玩意儿就像网页版的speedtest.net,但是可以在命令行里跑,特别适合我们这些服务器党。
安装很简单:
```
# CentOS/RHEL系列
yum install epel-release
yum install python-pip
pip install speedtest-cli
# Ubuntu/Debian系列
apt update
# 安装 pipx
sudo apt install pipx
pipx ensurepath
# 安装应用
pipx install speedtest-cli
#添加环境变量
echo 'export PATH="$PATH:/root/.local/bin"' >> ~/.bashrc
source ~/.bashrc
```
![](https://developer.qcloudimg.com/http-save/yehe-3597170/2b5d27d882604488a55831217dd80794.png)
image-20251014220320277
image-20251014220320277
装好之后直接运行:
它会自动帮你选择最近的[测试服务](https://cloud.tencent.com/product/wetest?from_column=20065&from=20065)器,然后开始测试。输出大概是这样的:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/bcc9c060c33af94c57e5fb4742d50761.png)
image-20251014220631686
image-20251014220631686
不过有时候自动选择的服务器不太理想,你可以手动指定。先看看附近有哪些服务器:
```
speedtest-cli --list | grep China
```
然后选一个延迟比较低的:
```
speedtest-cli --server 服务器ID
```
我记得有一次我们的业务突然变慢,用户投诉不断。我用speedtest-cli一测,发现下载速度只有平时的一半,赶紧联系运营商,原来是他们在做线路维护忘记通知我们了。
### **iperf3 - 专业级的带宽测试工具**
speedtest-cli虽然方便,但有个问题就是测试的是到公网的速度。如果你想测试内网带宽,或者两台服务器之间的带宽,那就得用iperf3了。
安装iperf3
```
# CentOS/RHEL
yum install iperf3
# Ubuntu/Debian
apt install iperf3
```
iperf3需要一台服务器做服务端,一台做客户端。在服务端运行:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/4dc81cf4ad8fc7db2df5d927fb0c97c4.png)
image-20251014220858122
image-20251014220858122
在客户端运行:
默认测试10秒钟,你也可以指定时间:
测试UDP带宽:
客户端结果:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/0c260bc2041a86bb41e912a80d7f6aa2.png)
image-20251014221400196
image-20251014221400196
服务端结果:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/5df4dc64e3ee680ec8363cc0bdd1d094.png)
image-20251014221423484
image-20251014221423484
我特别喜欢用iperf3测试新部署的服务器之间的网络性能。有一次我们要在两个机房之间做[数据同步](https://cloud.tencent.com/product/datainlong?from_column=20065&from=20065),用iperf3测了一下专线带宽,发现实际速度比运营商承诺的要低不少,最后让他们重新调试了线路。
### **wget/curl - 简单实用的下载测试**
有时候你就想快速测一下下载速度,不想装额外的工具,那wget和curl就够用了。
用wget测试:
```
wget -O /dev/null http://speedtest.tele2.net/100MB.zip
```
这个命令会下载一个100MB的文件到/dev/null(相当于丢弃),然后显示下载速度。
用curl测试:
```
curl -o /dev/null http://speedtest.tele2.net/100MB.zip
```
如果你想看更详细的信息:
```
curl -o /dev/null -w "下载速度: %{speed_download} bytes/sec\n总时间: %{time_total}s\n" http://speedtest.tele2.net/100MB.zip
```
这种方法的好处是可以测试到特定服务器的速度,比如你的CDN节点或者合作伙伴的服务器。
### **nload - 实时监控网络流量**
有时候你不是要测最大带宽,而是想看看当前的网络使用情况,nload就很合适。
安装nload
```
# CentOS/RHEL
yum install nload
# Ubuntu/Debian
apt install nload
```
运行很简单:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/abc21faf0f58be050bacb5ed876c0b79.png)
image-20251014223241747
image-20251014223241747
它会显示一个实时的图表,显示当前的上传和下载速度。如果你有多个网卡,可以用左右箭头键切换。
我经常用nload来监控服务器的网络使用情况,特别是在做[数据迁移](https://cloud.tencent.com.cn/product/datainlong?from_column=20065&from=20065)或者大文件传输的时候,可以实时看到网络利用率。
### **iftop - 看看谁在占用带宽**
iftop比nload更进一步,它不仅能显示总的流量,还能显示每个连接的流量情况。
安装iftop
```
# CentOS/RHEL
yum install iftop
# Ubuntu/Debian
apt install iftop
```
运行需要root权限:
iftop的界面有点像top命令,显示当前所有网络连接的流量情况。你可以看到每个IP地址的上传下载速度,这对于排查网络问题特别有用。
![](https://developer.qcloudimg.com/http-save/yehe-3597170/c4ff6771964687b77a9403d47cc2303b.png)
image-20251014223316164
image-20251014223316164
有一次我们的服务器网络突然变慢,用iftop一看,发现有个IP在疯狂下载数据,原来是有人在爬我们的网站...
### **nethogs - 进程级别的网络监控**
如果你想知道是哪个进程在占用网络带宽,nethogs就派上用场了。
安装nethogs
```
# CentOS/RHEL
yum install nethogs
# Ubuntu/Debian
apt install nethogs
```
运行:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/34178da062510889bde7d3bdd7010668.png)
image-20251014223425928
image-20251014223425928
nethogs会显示每个进程的网络使用情况,包括进程名、PID、用户等信息。这对于排查哪个应用程序占用带宽特别有用。
### **一些实用的测试技巧**
**选择合适的测试时间**
网络带宽测试最好在不同时间段多测几次,因为网络状况会随时间变化。我一般会在早上、中午、晚上各测一次,这样能得到比较全面的数据。
**注意测试方向**
很多人只测下载速度,忽略了上传速度。但对于服务器来说,上传速度同样重要,特别是如果你的服务器需要向用户推送大量数据的话。
**考虑并发连接**
单线程测试得到的带宽可能不能反映真实情况。可以试试多线程测试:
这个命令会启动4个并行连接进行测试。
**记录测试结果**
我建议把测试结果记录下来,建立一个基线。这样以后出现问题的时候,你就能快速判断是不是网络带宽的问题了。
### **遇到问题怎么办**
如果测试结果不理想,不要慌。我的经验是按这个顺序排查:
1. 1\. 先确认是不是测试方法的问题,换个工具再测一次
2. 2\. 检查服务器的网卡配置,看看是不是限速了
3. 3\. 联系网络管理员或者运营商,确认线路状况
4. 4\. 检查防火墙和安全组设置,看看是不是有限制
有一次我们的测试结果特别差,折腾了半天才发现是网卡驱动的问题,更新驱动之后速度立马就上来了。
### **写在最后**
网络带宽测试看起来简单,但要做好还是需要一些经验的。我建议大家平时多练习,熟悉这些工具的使用方法。更重要的是,要建立定期测试的习惯,这样才能及时发现问题。
说实话,网络问题往往是最难排查的,因为涉及的环节太多了。但只要你掌握了这些基本的测试方法,至少能快速定位问题的大概范围,这就已经成功了一半。
记住,做运维最重要的就是要有数据支撑,不能凭感觉。网络慢不慢,不是你说了算,是测试结果说了算!
本文参与 [腾讯云自媒体同步曝光计划](https://cloud.tencent.com.cn/developer/support-plan),分享自微信公众号。
原始发表:2025-10-14,如有侵权请联系 [cloudcommunity@tencent.com](mailto:cloudcommunity@tencent.com) 删除
@@ -0,0 +1,194 @@
## 测试软件
### speedtest-cli
https://cn.x-cmd.com/pkg/speedtest-cli
https://github.com/sivel/speedtest-cli
librespeed/speedtest
在自家搭建了Speedtest
http://himan.picp.net:5102/
服务器自动寻找最近的节点服务器,返回下载和上传速率
群晖:
https://laosu.tech/2022/10/19/%E7%94%A8Speedtest-Tracker%E8%B7%9F%E8%B8%AA%E4%B8%8A%E7%BD%91%E9%80%9F%E5%BA%A6/
speedtest tracker
https://zhuanlan.zhihu.com/p/640264958
Docker Speedtest analyser
https://www.modb.pro/db/127325
### iperf3
```
# Debian/Ubuntu 系
sudo apt update sudo apt install iperf3
# CentOS/RHEL 系
sudo yum install iperf3
```
client/server模式,先在服务器安装iperf3 -s -p XXX,在客户端iperf3 -c XXX对接
https://zhuanlan.zhihu.com/p/507720770
从家里到联通云和腾讯云服务器都是2Mbits/sec
chengang@JAMBPM1-2 ~ % iperf3 -c 116.162.100.119 -p 5001
```
Connecting to host 116.162.100.119, port 5001
[ 5] local 192.168.1.150 port 64437 connected to 116.162.100.119 port 5001
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 768 KBytes 6.27 Mbits/sec
[ 5] 1.00-2.01 sec 0.00 Bytes 0.00 bits/sec
[ 5] 2.01-3.01 sec 256 KBytes 2.10 Mbits/sec
[ 5] 3.01-4.00 sec 128 KBytes 1.05 Mbits/sec
[ 5] 4.00-5.01 sec 256 KBytes 2.09 Mbits/sec
[ 5] 5.01-6.00 sec 128 KBytes 1.05 Mbits/sec
[ 5] 6.00-7.00 sec 256 KBytes 2.11 Mbits/sec
[ 5] 7.00-8.00 sec 256 KBytes 2.09 Mbits/sec
[ 5] 8.00-9.01 sec 256 KBytes 2.09 Mbits/sec
[ 5] 9.01-10.00 sec 256 KBytes 2.10 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 2.50 MBytes 2.10 Mbits/sec sender
[ 5] 0.00-10.00 sec 2.40 MBytes 2.01 Mbits/sec receiver
```
Windows测试结果:
```
D:\myWinApps\iperf-3.20-win64>iperf3 -c 150.158.120.215 -p 5001
Connecting to host 150.158.120.215, port 5001
[ 5] local 198.18.0.1 port 49649 connected to 150.158.120.215 port 5001
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.01 sec 1.62 MBytes 13.5 Mbits/sec
[ 5] 1.01-2.01 sec 256 KBytes 2.10 Mbits/sec
[ 5] 2.01-3.01 sec 256 KBytes 2.10 Mbits/sec
[ 5] 3.01-4.01 sec 256 KBytes 2.10 Mbits/sec
[ 5] 4.01-5.01 sec 256 KBytes 2.09 Mbits/sec
[ 5] 5.01-6.01 sec 256 KBytes 2.09 Mbits/sec
[ 5] 6.01-7.01 sec 128 KBytes 1.05 Mbits/sec
[ 5] 7.01-8.01 sec 256 KBytes 2.09 Mbits/sec
[ 5] 8.01-9.01 sec 256 KBytes 2.11 Mbits/sec
[ 5] 9.01-10.01 sec 256 KBytes 2.10 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 3.75 MBytes 3.14 Mbits/sec sender
[ 5] 0.00-10.03 sec 2.53 MBytes 2.11 Mbits/sec receiver
```
是我家里路由器问题?
天园测试结果:
```
D:\myWinApps\iperf-3.20-win64>iperf3 -c 150.158.120.215 -p 5001
Connecting to host 150.158.120.215, port 5001
[ 5] local 198.18.0.1 port 4812 connected to 150.158.120.215 port 5001
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.01 sec 52.1 MBytes 433 Mbits/sec
[ 5] 1.01-2.01 sec 0.00 Bytes 0.00 bits/sec
[ 5] 2.01-3.01 sec 12.0 MBytes 102 Mbits/sec
[ 5] 3.01-4.01 sec 0.00 Bytes 0.00 bits/sec
[ 5] 4.01-5.01 sec 12.0 MBytes 101 Mbits/sec
[ 5] 5.01-6.01 sec 12.0 MBytes 100 Mbits/sec
[ 5] 6.01-7.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 7.00-8.01 sec 12.0 MBytes 100 Mbits/sec
[ 5] 8.01-9.01 sec 0.00 Bytes 0.00 bits/sec
[ 5] 9.01-10.01 sec 12.0 MBytes 101 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 112 MBytes 94.0 Mbits/sec sender
[ 5] 0.00-10.04 sec 69.8 MBytes 58.3 Mbits/sec receiver
```
初步定位是东玺门家路由器问题!
上游网络节点问题!
### mtr
https://help.aliyun.com/zh/ecs/user-guide/use-mtr-tool-for-network-analysis
https://www.cnblogs.com/xyash/p/19276237
https://github.com/WinMTR/WinMTR-Official/releases/tag/v0.92
winmtr
https://blog.csdn.net/michaelwoshi/article/details/126924510
sudo mtr -w www.baidu.com
```
Start: 2025-12-03T22:39:15+0800
HOST: JAMBPM1-2.local Loss% Snt Last Avg Best Wrst StDev
1.|-- 192.168.1.1 0.0% 10 0.7 1.2 0.6 4.7 1.2
2.|-- 175.0.68.1 0.0% 10 3.9 3.6 2.1 4.3 0.6
3.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
4.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
5.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
6.|-- 113.96.4.238 20.0% 10 22.2 25.0 21.8 28.4 2.6
7.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
8.|-- 14.29.117.178 0.0% 10 23.2 26.4 23.2 35.6 4.7
9.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
10.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
11.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
12.|-- 183.2.172.17 0.0% 10 22.4 22.5 21.6 23.5 0.6
```
https://www.cnblogs.com/xyash/p/19276237
### nload
服务器当前的网络速率
### NetworkQauality
Mac下命令
```
networkQuality -v
```
[[networkQualitymacOS 中隐藏的网络测试工具(命令行)]]
### netquality
Mac下不能运行,需要在Docker安装容器
https://github.com/xykt/NetQuality
### netperf
https://www.cnblogs.com/davidesun/p/12726006.html
https://zhuanlan.zhihu.com/p/692834798
### httpstat
https://github.com/reorx/httpstat
- 排查命令
```
# 关键排查命令:
ping 223.5.5.5 → 延迟<10ms(正常)
dig @localhost www.google.com → 响应超时
conntrack -L | wc -l → 29876(接近上限)
```
### TurboACC
openwrt插件
### Homebox
https://www.swjsj.com/articles/2025/04/25/1745589670102.html
docker run -d -p 3300:3300 --name homebox xgheaven/homebox
![image.png](https://joyimg.cpolar.top/i/2025/12/04/69314dd8a987d.png)
测试出来居然这么强?应该是从M1到DSM的数据!
https://github.com/XGHeaven/homebox
在自家搭建了一个服务器:
http://himan.picp.net:3300/
## BBR加速
https://blog.eimoon.com/p/ubuntu-bbr/
centOS 7.X不同于ubuntu、debian
[[CentOS7安装TCP BBR加速_tcp加速脚本-CSDN博客]]
@@ -0,0 +1,129 @@
---
title: 要使用 `rsync` 同步数据后保证恢复时权限和属性与原始
created: 2026-05-31
source: Cherry Studio
tags:
---
要使用 `rsync` 同步数据后保证恢复时权限和属性与原始一致,需要使用正确的参数来保留**所有权、权限、时间戳等元数据**。以下是不同场景下的解决方案:
---
### **1\. 超级用户(Root)恢复(源和目标均为Root权限)**
如果需要完全恢复**用户、组、权限、时间戳**等元数据,必须使用 `root``sudo` 运行:
```bash
sudo rsync -avAXH --numeric-ids --delete /source/ user@remote:/destination/
```
**关键参数说明:**
- `-a` (`--archive`):递归同步并保留权限、所有者、时间戳等
- `-v` (`--verbose`):输出详细信息
- `-A` (`--acls`):保留ACLs(访问控制列表)
- `-X` (`--xattrs`):保留扩展属性(如SELinux标签)
- `-H` (`--hard-links`):保留硬链接
- `--numeric-ids`:以数字形式保留用户/组ID(不依赖目标机器的用户名映射)
- `--delete`:删除目标端存在但源端不存在的内容(完全一致恢复)
---
### **2\. 非Root用户恢复(仅保留部分权限)**
如果源数据 **不是** root 所有,或者目标服务器 **不信任** root 访问,可以仅保留可管理的权限:
```bash
rsync -av --no-perms --no-owner --no-group --times /source/ user@remote:/destination/
```
或(部分保留):
```bash
rsync -rtlgoDv --no-perms --no-owner /source/ user@remote:/destination/
```
**参数说明:**
- `--no-perms``--no-owner``--no-group`:跳过权限和所有权(非root用户无法修改这些)
- `--times` (`-t`):仅保留时间戳
- `-D`:保留设备文件(仅限root
- `-o` (`--owner`)、`-g` (`--group`):尝试保留用户/组(可能仅在root下有效)
---
### **3\. 跨服务器同步的完整权限保障方案**
如果既要同步数据,又想 **以后能完整恢复**(即使源服务器崩溃),最佳方式是:
1. **备份元数据**(先存一份权限信息,以防后续恢复):
```bash
getfacl -R /source/ > /backup/source_permissions.acl
```
2. **用** `rsync` **完整同步数据**
```bash
sudo rsync -avAXH --numeric-ids --delete /source/ user@remote:/destination/
```
3. **恢复时重新应用权限**
```bash
sudo setfacl --restore=/backup/source_permissions.acl
```
---
### **4\. 限制非Root权限的方案**
如果源数据 **有 root 权限部分**,但目标机器 **不能使用 root**,可以采用:
1. **只同步你能控制的文件**
```bash
rsync -av --rsync-path="sudo -u targetuser rsync" \
--filter="- *root*" /source/ user@remote:/destination/
```
2. **使用** `fakeroot`**(模拟root权限)**(仅适用于部分环境):
```bash
fakeroot rsync -av /source/ user@remote:/destination/
```
3. **在恢复时手动修复权限**(适用于少量文件):
```bash
chmod/chown 手工调整权限
```
---
### **总结**
| 方案 | 适用场景 | 能否100%恢复权限 |
| --- | --- | --- |
| **root+**`-aAXH` | 需要完整恢复 | ✅ 可以 |
| `--numeric-ids` | 跨机器同步 | ✅ 可以 |
| **非root** `rsync` | 受限权限 | ❌ 部分丢失 |
| **ACL备份+恢复** | 安全恢复 | ✅ 可以 |
如果数据是关键业务,建议 **先测试恢复流程**,确保 `rsync` 参数正确,避免权限丢失!