<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Mark ^-^</title><description>❤</description><link>https://dyh1319.asia/</link><language>zh_CN</language><item><title>Linux 彻底删除 Systemctl 服务</title><link>https://dyh1319.asia/posts/linux-delete-systemctl-service/</link><guid isPermaLink="true">https://dyh1319.asia/posts/linux-delete-systemctl-service/</guid><description>在 Linux 系统下彻底删除由 Systemctl 管理的服务</description><pubDate>Sun, 21 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::caution[特别注意]
本文所有命令中的 test.service 需替换成实际需要删除的服务名称
:::&lt;/p&gt;
&lt;h1&gt;1、停止服务&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;# 停止服务
sudo systemctl stop test.service
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;2、禁用开机启动&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl disable test.service
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;3、删除服务文件&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo rm -f /etc/systemd/system/test.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo rm -f /lib/systemd/system/test.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip[提示]
上面是服务文件的常见路径，具体路径可通过下面的命令查看&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl status test.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h1&gt;4、重新加载 Systemd 配置&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl daemon-reload
sudo systemctl reset-failed
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;5、验证服务已删除&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;systemctl status test.service  # 应该显示 &quot;Unit test.service could not be found&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;6、依赖关系清理&lt;/h1&gt;
&lt;p&gt;如果服务有依赖关系（如定时器、其他服务），也需要一并删除&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl list-dependencies test.service # 查看依赖
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;7、日志清理&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo journalctl -u test,service # 查看服务日志
sudo journalctl --vacuum-time=1s --unit=test.service # 清除服务日志
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Linux 下 rm 删除文件后，磁盘容量没有被释放</title><link>https://dyh1319.asia/posts/linux-rm-not-free-disk/</link><guid isPermaLink="true">https://dyh1319.asia/posts/linux-rm-not-free-disk/</guid><description>解决在 Linux 下，使用 rm -f 指令删除文后，磁盘容量有时候并没有被释放的问题</description><pubDate>Sun, 21 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;问题描述&lt;/h1&gt;
&lt;p&gt;使用 rm -f 指令删除文件后，再使用 df -h 指令查看，发现磁盘空间可能未被释放&lt;/p&gt;
&lt;h1&gt;问题原因&lt;/h1&gt;
&lt;p&gt;在 Linux 系统中，通过 rm 删除文件将会从文件系统的目录结构上解除链接，但此时如果文件是正在被使用，比如 java 服务正在运行此时删除其日志，进程其实仍然可以读取该文件，只是在文件列表上看不见了，磁盘空间也一直被占用，除非把占用此文件的服务关闭，文件才会正式被删除&lt;/p&gt;
&lt;h1&gt;解决方案&lt;/h1&gt;
&lt;h2&gt;方法一 (会将关联程序杀掉，需要将被杀的程序进行重启)&lt;/h2&gt;
&lt;p&gt;当 Linux 打开一个文件的时候，Linux 内核会为每一个进程在 /proc/xxx/fd/ 目录（xxx 为进程的 pid 号），建立一个以其 pid 为名的目录用来保存进程的相关信息，而其子目录 fd 保存的是该进程打开的所有文件&lt;/p&gt;
&lt;p&gt;第一个方法就是直接 kill 关联文件的进程&lt;/p&gt;
&lt;p&gt;查看所有正在使用已经被删除的文件的进程（推荐使用第一种方法，第二种方法没用的数据太多）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo find /proc/xxx/fd -ls | grep &apos;(deleted)&apos; # 方法一
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo lsof | grep deleted # 方法二
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kill 相应的进程或者重启该进程，让 OS 自动回收磁盘空间&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo kill -9 xxx
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;方法二 (程序很重要，不能被停止/杀死进程)&lt;/h2&gt;
&lt;p&gt;通过该进程，进入到对应的 /proc/xxx/fd 目录，仍然可以找到对应的被删除文件（找到后缀是 delete 标签的文件）&lt;/p&gt;
&lt;p&gt;OS 会使用一个 fd 来链接文件的物理位置&lt;/p&gt;
&lt;p&gt;直接向目标文件写入一个空格字符串来替换目标文件的内容，以达到清理目标文件占用的目的（推荐第一种方法）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo echo &quot; &quot; &amp;gt; &quot;/proc/$pid/fd/$fd&quot; # 方法一
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo echo &quot; &quot; &amp;gt; 文件名 # 方法二
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>基于 Ubuntu 系统，手把手教你使用 SoftEther 搭建异地局域网，流畅体验需要局域网联机的 P2P 游戏</title><link>https://dyh1319.asia/posts/softether-online-server/</link><guid isPermaLink="true">https://dyh1319.asia/posts/softether-online-server/</guid><description>本文基于 Ubuntu 20 系统，手把手教你如何使用 SoftEther 搭建异地局域网，流畅体验需要局域网联机的 P2P 游戏，支持局域网房间搜索、局域网IP直连。</description><pubDate>Fri, 18 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;一、前言&lt;/h1&gt;
&lt;p&gt;SoftEther VPN 是在日本筑波大学开发的一款免费且开源的 VPN 软件，兼容多种设备且支持多种协议，其 Github 开源地址如下：
::github{repo=&quot;SoftEtherVPN/SoftEtherVPN&quot;}&lt;/p&gt;
&lt;p&gt;:::important[重要]
使用本教程需要有一个公网 IP。本教程只作为参考，本教程基于 Ubuntu 系统搭建 SoftEther 服务端，其他 Linux 发行版或者 Windows 系统请参考本教程和其他教程自行研究搭建。
:::&lt;/p&gt;
&lt;h1&gt;二、SoftEther 服务端安装与配置&lt;/h1&gt;
&lt;h2&gt;1. 下载 SoftEther 服务端&lt;/h2&gt;
&lt;p&gt;SoftEther 下载中心：&amp;lt;a href=&quot;https://www.softether-download.com/cn.aspx&quot; target=&quot;_blank&quot;&amp;gt;https://www.softether-download.com/cn.aspx&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;选择 SoftEther VPN (Freeware) 产品和 SoftEther VPN Server 组件，并自行根据系统和 CPU 架构选择最新的 rtm 版本进行下载。&lt;/p&gt;
&lt;p&gt;:::tip[提示]
尽量不要选择 beta 版本，beta 版本可能存在一些问题。
:::&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;img-1.png&quot; alt=&quot;img-1.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;2. 运行 SoftEther 服务端&lt;/h2&gt;
&lt;p&gt;如果服务器上没有 C 语言运行环境，则需要先使用以下命令安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install make gcc build-essential
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将下载好的 SoftEther VPN 服务端压缩包文件上传到 Linux 服务器上，并进行解压。&lt;/p&gt;
&lt;p&gt;:::tip[提示]
请根据实际情况修改为自己的压缩包文件名。
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -xvf softether-vpnserver-v4.44-9807-rtm-2025.04.16-linux-x64-64bit.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入解压后的目录。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd vpnserver/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;根据 Makefile 自动编译和链接源代码文件，生成可执行文件。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;make
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3. 配置 Systemd 管理 SoftEther VPN Server 服务&lt;/h2&gt;
&lt;p&gt;新建 SoftEther VPN Server 服务的 Systemd 管理文件。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo vim /lib/systemd/system/vpnserver.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按 i 进入插入模式，复制粘贴以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/home/ubuntu/vpnserver/vpnserver start
ExecStop=/home/ubuntu/vpnserver/vpnserver stop
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按 Esc 退出插入模式，输入 :wq 保存并退出。&lt;/p&gt;
&lt;p&gt;运行以下命令，重载 Systemd 管理文件，设置 vpnserver 服务为开机启动，并启动 vpnserver 服务。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl daemon-reload
sudo systemctl enable vpnserver
sudo systemctl start vpnserver
sudo systemctl status vpnserver
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行成功后，将返回以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vpnserver.service - SoftEther VPN Server
Loaded: loaded (/lib/systemd/system/vpnserver.service; enabled; vendor preset: enabled)
Active: active (running)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note[提示]
观察到 active (running) 状态，说明服务启动成功。
:::&lt;/p&gt;
&lt;h2&gt;4. 远程管理 SoftEther 服务端&lt;/h2&gt;
&lt;p&gt;SoftEther VPN Server 一大特点在于方便的远程管理功能。以 Windows 作为管理系统为例，首先到 http://www.softether-download.com/cn.aspx 上选择 SoftEther VPN Server Manager for Windows，然后选择最新的 rtm 版本下载安装，安装的时候选择仅限管理工具的一项即可。
&lt;img src=&quot;img-2.png&quot; alt=&quot;img-2.png&quot; /&gt;
&lt;img src=&quot;img-3.png&quot; alt=&quot;img-3.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安装完成后打开 SE-VPN Server Manager (Tools)，点击新设置，起一个设置名，输入你的服务器公网 IP ，端口选择 5555，点击确定。&lt;/p&gt;
&lt;p&gt;:::caution[注意]
服务器防火墙需要先放行 5555 TCP 端口
:::
&lt;img src=&quot;img-4.png&quot; alt=&quot;img-4.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;回到主界面，选择你刚刚创建的连接，点击连接。&lt;/p&gt;
&lt;p&gt;首次连接会提示创建管理密码，设置密码即可。&lt;/p&gt;
&lt;p&gt;:::tip[提示]
不建议设置简单密码，防止被暴力破解。
:::&lt;/p&gt;
&lt;p&gt;首次成功连接服务器后，会弹出简单安装窗口，只选择远程访问 VPN Server 即可，然后点击下一步。
&lt;img src=&quot;img-5.png&quot; alt=&quot;img-5.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;提示当前 VPN Server 或 VPN Bridge 的设置将被初始化，点击是。
&lt;img src=&quot;img-6.png&quot; alt=&quot;img-6.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;需要为创建的虚拟 HUB 命名，可自行命名或者使用默认命名，然后点击确定。
&lt;img src=&quot;img-7.png&quot; alt=&quot;img-7.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;设置动态 DNS。直接点击退出即可。
&lt;img src=&quot;img-8.png&quot; alt=&quot;img-8.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;勾选 L2TP 的第一个选项，保持默认或自行修改预共享秘钥。L2TP 是为了支持从 Windows、MacOS、iPhone、Android 等系统内置的 VPN 客户端连接，若只使用 SoftEther 客户端进行连接，则可以不勾选。
&lt;img src=&quot;img-9.png&quot; alt=&quot;img-9.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;VPN Azure 云是免费的中转服务，不过服务器在日本，延迟较高，如果没有公网，可以自行尝试使用，这里直接选择禁用。
&lt;img src=&quot;img-10.png&quot; alt=&quot;img-10.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;创建用户。
&lt;img src=&quot;img-11.png&quot; alt=&quot;img-11.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;新建用户。
&lt;img src=&quot;img-12.png&quot; alt=&quot;img-12.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;输入用户名，验证类型选密码验证，设置密码，然后点击确定。
&lt;img src=&quot;img-13.png&quot; alt=&quot;img-13.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;关闭管理用户和安装向导界面，可以自行管理监听的 TCP / IP 端口列表，若出现其他端口被占用，建议只保留 TCP 5555 端口即可。然后点击管理虚拟 HUB。
&lt;img src=&quot;img-14.png&quot; alt=&quot;img-14.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击虚拟 NAT 和虚拟 DHCP 服务器。
&lt;img src=&quot;img-15.png&quot; alt=&quot;img-15.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;先不要启动 SecureNAT，先点击 SecureNAT 配置。
&lt;img src=&quot;img-16.png&quot; alt=&quot;img-16.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;MAC 地址和 IP 地址保持默认分配的即可，取消勾选“使用虚拟 NAT 功能”，清除“应用到客户端的选项”中的所有内容，然后点击确定。
:::caution[注意]
一定要清除“应用到客户端的选项”中的所有内容，否则客户端的所有流量都会经过服务端，导致正常上网的卡顿和服务端流量的流失。
:::
&lt;img src=&quot;img-17.png&quot; alt=&quot;img-17.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击启用 SecureNAT。
&lt;img src=&quot;img-18.png&quot; alt=&quot;img-18.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;服务端的搭建到这里就结束了。&lt;/p&gt;
&lt;h1&gt;三、SoftEther 客户端安装与配置&lt;/h1&gt;
&lt;p&gt;在 SoftEther 下载中心：&amp;lt;a href=&quot;https://www.softether-download.com/cn.aspx&quot; target=&quot;_blank&quot;&amp;gt;https://www.softether-download.com/cn.aspx&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;选择 SoftEther VPN (Freeware) 产品和 SoftEther VPN Client 组件，并自行根据系统和 CPU 架构选择最新的 rtm 版本进行下载。
&lt;img src=&quot;img-19.png&quot; alt=&quot;img-19.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安装的时候选择 SoftEther VPN Client 一项。一直点击下一页，直到安装完成。
&lt;img src=&quot;img-20.png&quot; alt=&quot;img-20.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;运行 SoftEther VPN Client 管理工具，点击虚拟适配器 -&amp;gt; 新建虚拟网络适配器，在弹出来的创建新虚拟网络适配器窗口中点击确定。
&lt;img src=&quot;img-21.png&quot; alt=&quot;img-21.png&quot; /&gt;
&lt;img src=&quot;img-22.png&quot; alt=&quot;img-22.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击虚拟适配器 -&amp;gt; 打开 Windows 网络连接。
&lt;img src=&quot;img-23.png&quot; alt=&quot;img-23.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;找到刚才创建的虚拟网卡，双击打开属性。
&lt;img src=&quot;img-24.png&quot; alt=&quot;img-24.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;双击打开 Internet 协议版本 4 (TCP/IPv4)。
&lt;img src=&quot;img-25.png&quot; alt=&quot;img-25.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;单击高级。
&lt;img src=&quot;img-26.png&quot; alt=&quot;img-26.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;取消勾选自动跃点，手动设置接口跃点数为 1，点击确定。
&lt;img src=&quot;img-27.png&quot; alt=&quot;img-27.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;一直点击确定。关闭 Windows 网络连接。&lt;/p&gt;
&lt;p&gt;回到 SoftEther VPN Client 管理工具，点击添加新的 VPN 连接。
&lt;img src=&quot;img-28.png&quot; alt=&quot;img-28.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;连接名称任意填写，主机名为服务器的域名或 IP 地址，端口为 5555，虚拟 HUB 名为之前在服务端创建的虚拟 HUB 名（默认为 VPN），虚拟网卡选择刚才创建的，选择标准密码验证，用户名和密码使用之前服务端所设置的。
&lt;img src=&quot;img-29.png&quot; alt=&quot;img-29.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;双击即可直接进行连接。需要所有进行局域网联机的小伙伴都成功使用 SoftEther VPN Client 连接上后方可进行局域网联机，对于直接搜索局域网房间的游戏可直接进行搜索；对于需要局域网 IP 进行连接的游戏，连接 VPN 成功后会弹出分配的局域网 IP 地址，请连接方输入房主的局域网 IP 地址（即房主连接此 VPN 成功后弹出的局域网 IP 地址）。
&lt;img src=&quot;img-30.png&quot; alt=&quot;img-30.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::caution[特别注意]
服务器防火墙需要先放行 5555 TCP 端口，否则客户端无法连接。
:::&lt;/p&gt;
&lt;p&gt;客户端的配置到这里就结束了。祝小伙伴们联机愉快！&lt;/p&gt;
</content:encoded></item></channel></rss>