<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Linux on Yancey's Blog</title><link>https://yecnay.net/tags/linux/</link><description>Recent content in Linux on Yancey's Blog</description><generator>Hugo -- 0.164.0</generator><language>zh-cn</language><lastBuildDate>Tue, 19 May 2026 15:46:00 +0800</lastBuildDate><atom:link href="https://yecnay.net/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>1panel 部署nextcloud 并设置反向代理访问</title><link>https://yecnay.net/posts/tech/1panel-%E9%83%A8%E7%BD%B2nextcloud-%E5%B9%B6%E8%AE%BE%E7%BD%AE%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E8%AE%BF%E9%97%AE/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/1panel-%E9%83%A8%E7%BD%B2nextcloud-%E5%B9%B6%E8%AE%BE%E7%BD%AE%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E8%AE%BF%E9%97%AE/</guid><description>&lt;p&gt;要在 1Panel 中通过特定端口 &lt;code&gt;https://a.com:20888&lt;/code&gt; 访问 Nextcloud，除了常规的反向代理设置，关键在于处理 非标准端口 的跳转识别。&lt;/p&gt;
&lt;h2 id="1-部署-nextcloud-容器"&gt;1. 部署 Nextcloud 容器&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在 应用商店 安装 Nextcloud。&lt;/li&gt;
&lt;li&gt;外部访问端口：设置一个内部端口（例如 &lt;code&gt;8080&lt;/code&gt;），此端口仅供 1Panel 内部反代使用，无需在防火墙放行。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="2-创建反向代理网站"&gt;2. 创建反向代理网站&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;新建网站：选择“反向代理”，域名填写 &lt;code&gt;a.com&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设置 HTTPS：在网站设置中申请/配置 SSL 证书。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;修改主站端口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在网站的“设置” -&amp;gt; “基本信息”中，将监听端口改为 &lt;code&gt;20888&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;确保在 1Panel 的 防火墙 菜单中放行 &lt;code&gt;20888&lt;/code&gt; 端口。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;代理配置：代理地址指向 &lt;code&gt;http://127.0.0.1:8080&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="3-修改-nextcloud-核心配置-解决重定向问题"&gt;3. 修改 Nextcloud 核心配置 (解决重定向问题)&lt;/h2&gt;
&lt;p&gt;由于使用了非标准端口 &lt;code&gt;20888&lt;/code&gt;，必须手动修改 &lt;code&gt;config.php&lt;/code&gt;，否则 Nextcloud 会自动跳转回不带端口的默认地址。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;进入 文件，打开：&lt;code&gt;/opt/1panel/apps/nextcloud/nextcloud/data/config/config.php&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;修改/添加以下关键配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;trusted_domains&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;array&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;127.0.0.1:8080&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;a.com:20888&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// 必须包含端口号
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;overwrite.cli.url&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;https://a.com:20888&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;overwritehost&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;a.com:20888&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;overwriteprotocol&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;https&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;trusted_proxies&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;127.0.0.1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;保存并 重启 Nextcloud 容器。&lt;/p&gt;</description></item><item><title>Arch Linux 删除软件包</title><link>https://yecnay.net/posts/tech/arch-linux-%E5%88%A0%E9%99%A4%E8%BD%AF%E4%BB%B6%E5%8C%85/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/arch-linux-%E5%88%A0%E9%99%A4%E8%BD%AF%E4%BB%B6%E5%8C%85/</guid><description>&lt;p&gt;在 Arch Linux 中，删除软件及其配置文件的操作取决于你是想删除&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;系统级配置文件&lt;/strong&gt;（如 &lt;code&gt;/etc&lt;/code&gt; 下的文件）还是&lt;strong&gt;用户级配置文件&lt;/strong&gt;（家目录下的“点文件”，如 &lt;code&gt;~/.config&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;以下是具体的操作方法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;删除软件及系统级配置文件&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;使用 &lt;code&gt;pacman&lt;/code&gt; 的递归删除参数可以清理软件本身、其未被其他软件使用的依赖以及系统级配置文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;删除软件及其未使用的依赖和系统配置：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;bash&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo pacman -Rns &amp;lt;软件名&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;请谨慎使用此类代码。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-R&lt;/code&gt;: 删除软件包。
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-n&lt;/code&gt;: 删除软件时同时移除其在系统路径（如 &lt;code&gt;/etc&lt;/code&gt;）下的配置文件。如果不加 &lt;code&gt;-n&lt;/code&gt;，pacman 会保留并重命名这些文件为 &lt;code&gt;.pacsave&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-s&lt;/code&gt;: 递归删除那些不再被其他软件包需要的依赖项。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;极端彻底删除（包含依赖软件的配置文件）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;bash&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo pacman -Rscn &amp;lt;软件名&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;请谨慎使用此类代码。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-c&lt;/code&gt;: 级联删除。除了删除该软件，还会删除所有依赖于它的软件。&lt;strong&gt;请务必检查输出列表，防止误删重要系统组件&lt;/strong&gt;。 &lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="2"&gt;
&lt;li&gt;删除用户级配置文件夹（手动）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;pacman&lt;/code&gt; 不会触碰用户家目录（&lt;code&gt;~&lt;/code&gt;）下的任何文件，这些文件是由程序在运行时生成的，不属于包管理器管理范围。你需要手动清理： &lt;/p&gt;
&lt;p&gt;通常这些文件夹位于以下位置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;主配置文件：&lt;/strong&gt; &lt;code&gt;~/.config/&amp;lt;软件名&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缓存文件：&lt;/strong&gt; &lt;code&gt;~/.cache/&amp;lt;软件名&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据文件：&lt;/strong&gt; &lt;code&gt;~/.local/share/&amp;lt;软件名&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;手动删除示例：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;bash&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;rm -rf ~/.config/&amp;lt;软件名&amp;gt;
rm -rf ~/.local/share/&amp;lt;软件名&amp;gt;
rm -rf ~/.cache/&amp;lt;软件名&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;请谨慎使用此类代码。&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;清理残留的孤立包（孤儿包）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你之前删除软件时没带 &lt;code&gt;-s&lt;/code&gt; 参数，可能会留下许多无用的依赖包，可以使用以下命令清理：&lt;/p&gt;
&lt;p&gt;bash&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# 列出并删除所有孤儿依赖包及其配置文件
sudo pacman -Rns $(pacman -Qdtq)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;请谨慎使用此类代码。&lt;/p&gt;</description></item><item><title>Beancount复式记账</title><link>https://yecnay.net/posts/tech/beancount%E5%A4%8D%E5%BC%8F%E8%AE%B0%E8%B4%A6/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/beancount%E5%A4%8D%E5%BC%8F%E8%AE%B0%E8%B4%A6/</guid><description>&lt;hr&gt;
&lt;p&gt;profileName: yecnay.com
postId: &amp;ldquo;1782&amp;rdquo;
postType: post
categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;640&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id="beancount-复式记账"&gt;Beancount 复式记账&lt;/h1&gt;
&lt;h2 id="一-为什么"&gt;一 、为什么&lt;/h2&gt;
&lt;p&gt;我在&lt;a href="https://byvoid.com/blog/4-years-at-google-3"&gt;在 Google 的这四年（三）&lt;/a&gt;这篇文章中提到了一个「秘密武器」Beancount 以及「复式记账」的概念。我说过我要专门写一篇文章来分享我的经验，这篇文章就是我承诺的兑现了。&lt;/p&gt;
&lt;h3 id="如何实现财务自由"&gt;如何实现财务自由&lt;/h3&gt;
&lt;p&gt;这个章节标题有点吸引人眼球，像是成功学教程。但是我保证我下面说的内容都是严肃，而且有明确定义和方法的。&lt;/p&gt;
&lt;p&gt;为什么要记账，我来用一句话总结就是为了&lt;strong&gt;提升对自我的认识&lt;/strong&gt;。记账是个人理财的基础，更是通往财务自由的必经之路。财务自由这件事情固然是根本需要赚钱来实现，但并不是只有一夜暴富才能实现的。财务自由其实并不是一件虚无缥缈的事情，而是每个人都可以努力达到的一种状态，换句话说就是「退休」，只不是有人能在三十多岁退休，有人要六十岁，有人则要到八十岁。&lt;/p&gt;
&lt;p&gt;财务自由的一般定义是&lt;strong&gt;由资产产生的收入不少于生活开销&lt;/strong&gt;。如果不知道自己有多少开销，甚至不知道自己有多少资产、收入，即便是一夜暴富，财务自由是一件不可能的事情。&lt;/p&gt;
&lt;p&gt;接下来我来解释为什么财务自由是可以实现的，而且应该是每个人的目标。首先需要强调的概念是**资产（Assets）&lt;strong&gt;和&lt;/strong&gt;净资产（Net Assets）**的区别，虽然我之后还会详细解释，但是这里需要记住，财务自由并非对个人净资产的要求，这也就是为什么不需要暴富就能实现。像所有投资都有期限一样，个人的寿命也是有期限的。每当我想到我总有一天会死，都会觉得有些忧伤，但这是无法改变的自然规律。只要在预期的寿命之内资产（而不是净资产）产生现金流能够满足生活所需的开销，这就是财务自由。我对资产产生现金流的定义较为宽泛，不仅包括利息、分红、租金、版税这类收入，还包括了直接通过资产折现的收入，即净资产减少。&lt;/p&gt;
&lt;p&gt;要想达到财务自由，需要三点要求：对支出的预期、对资产和收入的了解、对寿命的期望。这三点都是说起来容易，做起来难的，但是记账可以帮助你很大程度上解决至少前两个问题。至于第三个问题，才是财务自由的根本困难所在，不过这个问题的解决方案已经超出了本文探讨的内容了。&lt;/p&gt;
&lt;h3 id="为什么要复式记账"&gt;为什么要复式记账&lt;/h3&gt;
&lt;p&gt;记账这件事是那种容易让人因为一时冲动开始，但是很快就放弃的事情。每个记过账人都有不同的原因和契机，但能坚持下来的则凤毛麟角。记账的好处是提升对自己的了解，解决那种不知道自己赚的钱都到哪里去了的问题。但记账的困难也显而易见，那就是麻烦，还容易遗漏、错误。一般来说普通人对记账的理解就是每笔消费都干什么了，所以就是每一笔消费都有一个金额和类别就可以了。这种记账方式一开始简单，但能带来的价值有限，只是开支记录而已，长期看来难以说服自己为了这些价值而忍受麻烦的记账过程。&lt;/p&gt;
&lt;p&gt;相比普通的流水账，复式记账的核心理念是账户之间的进出关系，要求所有的记录全部入账，它可以保证账目的完整性和一致性。复式记账可以提供除了开支记录之外的损益表、资产负债表、现金流量表、试算平衡表等报表。复式记账还可以把投资和消费轻易区分，譬如购入电脑、手机，可以作为资产项目入账并定期折旧。同理对各种代金券、点数积分的购入一样要算入资产而不是消费。&lt;/p&gt;
&lt;p&gt;虽然有各种各样的手机应用号称可以简化记账，它们把用户交互做得更加简单友善，有的还可以从银行账户、信用卡公司直接抓取数据，降低心理障碍，但与此同时它们却带来了另一个问题，就是数据所有权、安全性和持久性的疑虑。这些工具大多都是把数据存储在云端的，泄漏隐私的可能性不言而喻。更麻烦的是，它们几乎都是自己的专有格式，无法导出保存，或者哪怕可以导出也难以使用。这也意味着你不得不一直用一个产品，直到有一天倒闭或者服务关闭为止。这对我来说是不可接受的，因为在互联网时代能活过十年的产品非常稀少，无论是像 Google 这样随意关闭服务的大公司，还是随时有可能倒闭的小公司。复式记账的价值在于数据的完整性，我对其数据寿命的要求是二十年以上。&lt;/p&gt;
&lt;p&gt;复式记账是一种划时代的发明，这个发明被认为是源于中世纪的地中海城邦（意大利或者埃及犹太人）。复式记账技术成为中世纪至大航海时代复杂贸易的支柱性工具，使得复杂的合约、信贷成为可能。后世会计学、金融学的许多概念都来自于复式记账，可以说体系化的资本主义是从复式记账的实践中诞生的。&lt;/p&gt;
&lt;h3 id="如何复式记账"&gt;如何复式记账&lt;/h3&gt;
&lt;p&gt;网上对于复式记账的文章也是汗牛充栋了，但各种晦涩难懂的名词可能会吓跑人。我不打算在这里介绍什么是复式记账，因为很难一句话说清楚，说得复杂了又没有意义。其实你并不需要懂很多才能开始复式记账，只需要一些最基本的概念就可以了。这个概念就是会计恒等式。&lt;/p&gt;
&lt;h4 id="会计恒等式"&gt;会计恒等式&lt;/h4&gt;
&lt;p&gt;作为会计学的核心，复式记账是一种实践中诞生的技术。除了最基本的会计恒等式之外，复式记账只有规范，没有对错。那么什么是会计恒等式呢？最基本的形式就是：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;资产 = 负债 + 权益（净资产）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这个等式对于没有接触过会计学的人来说可能不太容易理解，但是记账实践过马上会明白的。理解的难点在于，会计学上的「资产（Assets）」和一般人对一个人富有程度的理解不太一样，因为资产是负债和权益的总和，负债（Liabilities）也是资产的一部分。&lt;/p&gt;
&lt;p&gt;更容易理解的部分其实是权益（Equity），在个人理财的上下文中，又和净资产（Net Assets）是等价的，也就是经常说的「个人净值」。净资产需要由总资产排除负债，&lt;strong&gt;一个人到底是否富有，看的是净资产，而不是资产&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;举例说明，一个人首付 20 万美元，贷款 80 万美元，买了价格为 100 万美元的房产。假设这个人没有别的资产和负债，那么他的资产就是 100 万美元，负债是 80 万美元，而净资产是 20 万美元。在房价没有变化的情况下，买房对一个人的净资产没有什么影响（忽略手续费的话），而他的资产和负债都暴增，也就是所谓的「扩大资产负债表」。&lt;/p&gt;
&lt;p&gt;如果你理解了会计恒等式，那么复式记账的一切知识障碍已经扫除了。&lt;/p&gt;
&lt;h4 id="使用-beancount"&gt;使用 Beancount&lt;/h4&gt;
&lt;p&gt;再说一遍，复式记账在于实践，在开始实践之前学很多艰深的会计学概念没有任何意义。要开始实践，就要有工具上手了。在众多工具中我推荐使用 Beancount，原因如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Beancount 是一个开源工具，用 Python 实现的，可以本地运行。&lt;/li&gt;
&lt;li&gt;账本是一套基于文本的语法，方便存储和管理，个人拥有全部的数据，还可以使用 Git 管理。&lt;/li&gt;
&lt;li&gt;账本的语法很规范，也具备灵活度，像编程语言一样可以嵌套引入，也有语法高亮和代码检查工具。&lt;/li&gt;
&lt;li&gt;有完整的命令行工具链和可视化工具 fava，还有基于 SQL 的查询和报表生成。&lt;/li&gt;
&lt;li&gt;没有预先定义的类别、货币等现实世界概念，可以轻松实现多币种记账，包括各种点数、虚拟货币。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;除了 Beancount，&lt;a href="https://plaintextaccounting.org/#comparisons"&gt;Plain Text Accounting&lt;/a&gt;网站还列出了其他的开源工具比较，类似的具有竞争力的开源工具还有 Ledger 和 hledger，其中 Ledger 是这类工具的开创者。无论使用里面介绍的哪个工具，其基本理念都差不多，即记录账户之间的资金流动。最重要的是，你是账本的所有者，如果不喜欢一个工具了，可以轻易转换到另一个工具。虽然它们语法有些许区别，但写一个脚本来转换不难。&lt;/p&gt;</description></item><item><title>Cachyos gpu 直通</title><link>https://yecnay.net/posts/tech/cachyos-gpu-%E7%9B%B4%E9%80%9A/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/cachyos-gpu-%E7%9B%B4%E9%80%9A/</guid><description>&lt;p&gt;Cachyos 使用qemu kvm安装操作系统后，网络nat与ufw冲突，如何解决&lt;/p&gt;
&lt;p&gt;在 CachyOS（以及大多数 Arch 系发行版）中，QEMU/KVM 的 NAT 网络（通常是 &lt;code&gt;virbr0&lt;/code&gt;）与 UFW 冲突是一个经典问题。&lt;/p&gt;
&lt;p&gt;其根本原因在于：&lt;strong&gt;Libvirt 10.x 及更高版本默认改用了 &lt;code&gt;nftables&lt;/code&gt; 作为后端，而 UFW 主要是为 &lt;code&gt;iptables&lt;/code&gt; 设计的，或者其默认的“拒绝转发”策略（DROP Forward）拦截了虚拟机的流量。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以下是解决此问题的步骤，建议按顺序操作：&lt;/p&gt;
&lt;h3 id="1-将-libvirt-切换回iptables后端最推荐"&gt;1. 将 Libvirt 切换回 &lt;code&gt;iptables&lt;/code&gt; 后端（最推荐）&lt;/h3&gt;
&lt;p&gt;这是目前最有效的解决办法，因为 UFW 能够更好地识别和处理 &lt;code&gt;iptables&lt;/code&gt; 生成的转发规则。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;修改 Libvirt 的网络配置文件：&lt;/p&gt;
&lt;p&gt;Bash&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo nano /etc/libvirt/network.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;找到 &lt;code&gt;#firewall_backend = &amp;quot;nftables&amp;quot;&lt;/code&gt; 这一行（可能被注释掉了），取消注释并改为：&lt;/p&gt;
&lt;p&gt;Plaintext&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;firewall_backend = &amp;#34;iptables&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;保存并退出 (Ctrl+O, Enter, Ctrl+X)。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id="2-修改-ufw-的转发规则"&gt;2. 修改 UFW 的转发规则&lt;/h3&gt;
&lt;p&gt;即使修改了后端，UFW 默认也会禁止所有“路由（Route）”流量。你需要显式允许虚拟网桥的流量。&lt;/p&gt;
&lt;p&gt;执行以下命令：&lt;/p&gt;
&lt;p&gt;Bash&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# 允许虚拟网桥 virbr0 的入站流量
sudo ufw allow in on virbr0
# 允许经由 virbr0 的路由流量（这一步至关重要）
sudo ufw route allow in on virbr0
sudo ufw route allow out on virbr0
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h3 id="3-修改-ufw-的默认转发策略"&gt;3. 修改 UFW 的默认转发策略&lt;/h3&gt;
&lt;p&gt;如果上述操作后仍无法上网，请检查 UFW 的全局转发配置：&lt;/p&gt;</description></item><item><title>Debian启用BBR</title><link>https://yecnay.net/posts/tech/debian%E5%90%AF%E7%94%A8bbr/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/debian%E5%90%AF%E7%94%A8bbr/</guid><description/></item><item><title>Fcitx 最佳配置实践 2026-01-06</title><link>https://yecnay.net/posts/tech/fcitx-%E6%9C%80%E4%BD%B3%E9%85%8D%E7%BD%AE%E5%AE%9E%E8%B7%B5-2026-01-06/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/fcitx-%E6%9C%80%E4%BD%B3%E9%85%8D%E7%BD%AE%E5%AE%9E%E8%B7%B5-2026-01-06/</guid><description>&lt;hr&gt;
&lt;p&gt;title: &amp;ldquo;Fcitx 最佳配置实践 2026-01-06&amp;rdquo;
source: &amp;ldquo;&lt;a href="https://manateelazycat.github.io/2026/01/06/fcitx-best-config/%22"&gt;https://manateelazycat.github.io/2026/01/06/fcitx-best-config/&amp;quot;&lt;/a&gt;
author:
published:
created: 2026-01-11
description:
tags:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;clippings&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Fcitx 最佳配置实践 2026-01-06&lt;/p&gt;
&lt;p&gt;「&lt;a href="https://manateelazycat.github.io/tags.html#Fcitx"&gt;Fcitx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;」&lt;/p&gt;
&lt;p&gt;2026-01-06 2486字&lt;/p&gt;
&lt;p&gt;Linux 下最爽的输入法就是 Fcitx 了， 但是没有配置好， 就会出现各种各样的问题， 比如打太快漏字这种问题。&lt;/p&gt;
&lt;p&gt;今天把所有博客关于 Fcitx 的配置都整理成一篇， 方便我自己和大家以后用。&lt;/p&gt;
&lt;h3 id="安装-fcitx5-输入法框架"&gt;安装 Fcitx5 输入法框架&lt;/h3&gt;
&lt;p&gt;安装 Fcitx5 软件包：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool fcitx5-rime librime
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;fcitx5: 输入法基础框架主程序&lt;/li&gt;
&lt;li&gt;fcitx5-gtk: GTK 程序的支持， 必须安装， 修复打字太快漏字的问题&lt;/li&gt;
&lt;li&gt;fcitx5-qt: QT5 程序的支持， 必须安装， 修复打字太快漏字的问题&lt;/li&gt;
&lt;li&gt;fcitx5-configtool: 图形化配置工具&lt;/li&gt;
&lt;li&gt;fcitx5-rime: RIME 输入法&lt;/li&gt;
&lt;li&gt;fcitx5-im: 输入法设置工具&lt;/li&gt;
&lt;li&gt;librime: rime 相关库， 下面的 emacs-rime 会用到&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;备注：&lt;/p&gt;</description></item><item><title>ghostty 配置文件</title><link>https://yecnay.net/posts/tech/ghostty-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/ghostty-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/</guid><description>&lt;p&gt;Config generated by Ghostty Config
shell-integration = zsh
shell-integration-features = cursor,sudo,title
custom-shader-animation = true
clipboard-read = allow
clipboard-write = allow&lt;/p&gt;
&lt;p&gt;font-family = &amp;ldquo;ZedMono NFM Extd&amp;rdquo;&lt;/p&gt;
&lt;p&gt;font-style-bold = &amp;ldquo;Medium&amp;rdquo;
font-style-bold-italic = &amp;ldquo;Medium Italic&amp;rdquo;
font-size = 13.8
font-thicken = true
grapheme-width-method = &amp;ldquo;unicode&amp;rdquo;&lt;/p&gt;
&lt;p&gt;adjust-cell-width = -5%
palette = 0=#212733
palette = 1=#f08778
palette = 2=#53bf97
palette = 3=#fdcc60
palette = 4=#60b8d6
palette = 5=#ec7171
palette = 6=#98e6ca
palette = 7=#fafafa
palette = 8=#686868
palette = 9=#f58c7d
palette = 10=#58c49c
palette = 11=#ffd165
palette = 12=#65bddb
palette = 13=#f17676
palette = 14=#9debcf
palette = 15=#ffffff
background =
foreground =&lt;/p&gt;</description></item><item><title>How to change hostname on Debian 121110 Linux</title><link>https://yecnay.net/posts/tech/how-to-change-hostname-on-debian-121110-linux/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/how-to-change-hostname-on-debian-121110-linux/</guid><description>&lt;hr&gt;
&lt;p&gt;title: &amp;ldquo;How to change hostname on Debian 12/11/10 Linux&amp;rdquo;
source: &amp;ldquo;&lt;a href="https://www.cyberciti.biz/faq/how-to-change-hostname-on-debian-10-linux/%22"&gt;https://www.cyberciti.biz/faq/how-to-change-hostname-on-debian-10-linux/&amp;quot;&lt;/a&gt;
author:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;[Vivek Gite](/tags/Vivek Gite/)&amp;rdquo;
published: 2019-07-13
created: 2025-06-02
description: &amp;ldquo;This step-by-step guide explains how to change the hostname on your Debian Linux 12/11/10/9 system using the hostnamectl and /etc/hosts file.&amp;rdquo;
tags:&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Linux&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;H ow do I change the hostname of a Debian Linux 12/11/10 (“bullseye” or “Buster”) operating system permanently using the command line tools?&lt;/p&gt;
&lt;p&gt;You can use the hostnamectl command or hostname command to display or set the Debian Linux system’s host name. In this tutorial, you will learn how to change your hostname on Debian Linux.&lt;/p&gt;</description></item><item><title>How to Fix SSH Failed Permission Denied</title><link>https://yecnay.net/posts/tech/how-to-fix-ssh-failed-permission-denied/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/how-to-fix-ssh-failed-permission-denied/</guid><description/></item><item><title>Linux Xargs 命令使用</title><link>https://yecnay.net/posts/tech/linux-xargs-%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/linux-xargs-%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8/</guid><description/></item><item><title>Linux 命令行编辑快捷键</title><link>https://yecnay.net/posts/tech/linux-%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%BC%96%E8%BE%91%E5%BF%AB%E6%8D%B7%E9%94%AE/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/linux-%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%BC%96%E8%BE%91%E5%BF%AB%E6%8D%B7%E9%94%AE/</guid><description>&lt;p&gt;初学者在Linux命令窗口（终端）敲命令时，肯定觉得通过输入一串一串的字符的方式来控制计算是效率很低。
但是Linux命令解释器（Shell）是有很多快捷键的，熟练掌握可以极大的提高操作效率。
下面列出最常用的快捷键，这还不是完全版。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;命令行快捷键：
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;常用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ctrl L&lt;/strong&gt; ：清屏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl M&lt;/strong&gt; ：等效于回车&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl C&lt;/strong&gt; : 中断正在当前正在执行的程序&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;历史命令：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ctrl P&lt;/strong&gt; : 上一条命令，可以一直按表示一直往前翻&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl N&lt;/strong&gt; : 下一条命令&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl R&lt;/strong&gt;，再按历史命令中出现过的字符串：按字符串寻找历史命令（重度推荐）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;命令行编辑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tab&lt;/strong&gt; : 自动补齐（重度推荐）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl A&lt;/strong&gt; ： 移动光标到命令行首&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl E&lt;/strong&gt; : 移动光标到命令行尾&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl B&lt;/strong&gt; : 光标后退&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl F&lt;/strong&gt; : 光标前进&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt F&lt;/strong&gt; : 光标前进一个单词&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt B&lt;/strong&gt; : 光标后退一格单词&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl ]&lt;/strong&gt; : 从当前光标往后搜索字符串，用于快速移动到该字符串&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl Alt ]&lt;/strong&gt; : 从当前光标往前搜索字符串，用于快速移动到该字符串&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl H&lt;/strong&gt; : 删除光标的前一个字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl D&lt;/strong&gt; : 删除当前光标所在字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl K&lt;/strong&gt; ：删除光标之后所有字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl U&lt;/strong&gt; : 清空当前键入的命令&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl W&lt;/strong&gt; : 删除光标前的单词(Word, 不包含空格的字符串)&lt;/li&gt;
&lt;li&gt;**Ctrl \ ** : 删除光标前的所有空白字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl Y&lt;/strong&gt; : 粘贴&lt;strong&gt;Ctrl W&lt;/strong&gt;或&lt;strong&gt;Ctrl K&lt;/strong&gt;删除的内容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt .&lt;/strong&gt; : 粘贴上一条命令的最后一个参数（很有用）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt [0-9] Alt .&lt;/strong&gt; 粘贴上一条命令的第[0-9]个参数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt [0-9] Alt . Alt.&lt;/strong&gt; 粘贴上上一条命令的第[0-9]个参数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl X Ctrl E&lt;/strong&gt; : 调出系统默认编辑器编辑当前输入的命令，退出编辑器时，命令执行&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其他：&lt;/p&gt;</description></item><item><title>Linux教程 MOC</title><link>https://yecnay.net/posts/tech/linux%E6%95%99%E7%A8%8B-moc/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/linux%E6%95%99%E7%A8%8B-moc/</guid><description/></item><item><title>Mac 上“终端”中的键盘快捷键</title><link>https://yecnay.net/posts/tech/mac-%E4%B8%8A%E7%BB%88%E7%AB%AF%E4%B8%AD%E7%9A%84%E9%94%AE%E7%9B%98%E5%BF%AB%E6%8D%B7%E9%94%AE/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/mac-%E4%B8%8A%E7%BB%88%E7%AB%AF%E4%B8%AD%E7%9A%84%E9%94%AE%E7%9B%98%E5%BF%AB%E6%8D%B7%E9%94%AE/</guid><description>&lt;h1 id="mac-上终端中的键盘快捷键"&gt;Mac 上“终端”中的键盘快捷键&lt;/h1&gt;
&lt;p&gt;在 Mac 上的“终端” App &lt;img alt="img" loading="lazy" src="https://help.apple.com/assets/65DFB7A79DFEC61A7A0517AC/65DFB7A793CD15C0410BA37D/zh_CN/20f5edbfdfa0bd8ad4c4c6452e5b6761.png"&gt; 中，你可以使用键盘快捷键快速完成许多任务。请参阅下方的快捷键，以及在&lt;a href="https://support.apple.com/zh-cn/guide/terminal/aside/glos33eb8abd/2.14/mac/15.0"&gt;菜单栏&lt;/a&gt;的“终端”菜单中显示的快捷键。在 App 菜单中，键盘快捷键&lt;a href="https://support.apple.com/zh-cn/guide/mac-help/cpmh0011"&gt;显示为符号&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;【注】&lt;em&gt;App 中的键盘快捷键因你在 Mac 上使用的语言和键盘布局而异。如果下方的快捷键未按预期正常工作，请在菜单栏的 App 菜单中查找以查看正确的快捷键。你还可以&lt;a href="https://support.apple.com/zh-cn/guide/mac-help/mchlp1015"&gt;使用虚拟键盘&lt;/a&gt;查看当前键盘布局，称为&lt;/em&gt;输入法&lt;/em&gt;。&lt;/p&gt;
&lt;h2 id="使用终端窗口和标签页"&gt;使用“终端”窗口和标签页&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;操作&lt;/th&gt;
&lt;th style="text-align: left"&gt;快捷键&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;新建窗口&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-N&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;使用相同命令新建窗口&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Command-N&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;新建标签页&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;使用相同命令新建标签页&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Command-T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;显示或隐藏标签页栏&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;显示所有标签页或退出标签页概览&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-反斜杠 ()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;新建命令&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-N&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;新建远程连接&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;显示或隐藏检查器&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-I&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;编辑标题&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-I&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;编辑背景颜色&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Command-I&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;放大字体&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-加号键 (+)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;缩小字体&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-减号键 (–)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;下一个窗口&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-重音符键 (`)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;上一个窗口&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-Shift-波浪符号 (~)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;下一个标签页&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;上一个标签页&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Shift-Tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;将窗口拆分为两个面板&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;关闭拆分面板&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;关闭标签页&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;关闭窗口&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;关闭其他标签页&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Command-W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;全部关闭&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Shift-Command-W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;滚动到顶部&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-Home&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;滚动到底部&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-End&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;上一页&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-Page Up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;下一页&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-Page Down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;上一行&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Command-Page Up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;下一行&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Command-Page Down&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="编辑命令行"&gt;编辑命令行&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;操作&lt;/th&gt;
&lt;th style="text-align: left"&gt;快捷键&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;重新定位插入点&lt;/td&gt;
&lt;td style="text-align: left"&gt;在按住 Option 键的同时将指针移到新的插入点&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;将插入点移到行的开头&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;将插入点移到行的结尾&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-E&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;将插入点前移一个字符&lt;/td&gt;
&lt;td style="text-align: left"&gt;右箭头键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;将插入点后移一个字符&lt;/td&gt;
&lt;td style="text-align: left"&gt;左箭头键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;将插入点前移一个字词&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-右箭头键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;将插入点后移一个字词&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-左箭头键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;删除行&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-U&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;删除到行的结尾&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;向前删除到字词的结尾&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-D（选中&lt;a href="https://support.apple.com/zh-cn/guide/terminal/trmlkbrd/2.14/mac/15.0"&gt;将 Option 键用作 Meta 键&lt;/a&gt;后可用）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;向后删除到字词的开头&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;删除一个字符&lt;/td&gt;
&lt;td style="text-align: left"&gt;Delete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;向前删除一个字符&lt;/td&gt;
&lt;td style="text-align: left"&gt;向前删除（或使用 Fn-Delete）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;转置两个字符&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-T&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="在终端窗口中选择和查找文本"&gt;在“终端”窗口中选择和查找文本&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;操作&lt;/th&gt;
&lt;th style="text-align: left"&gt;快捷键&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;选择完整文件路径&lt;/td&gt;
&lt;td style="text-align: left"&gt;按住 Shift-Command 键并连按路径&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;选择整行文本&lt;/td&gt;
&lt;td style="text-align: left"&gt;点按该行三下&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;选择一个词&lt;/td&gt;
&lt;td style="text-align: left"&gt;连按该词&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;选择 URL&lt;/td&gt;
&lt;td style="text-align: left"&gt;按住 Shift-Command 键并连按 URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;选择矩形块&lt;/td&gt;
&lt;td style="text-align: left"&gt;按住 Option 键并拖移来选择文本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;剪切&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;拷贝&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;不带背景颜色拷贝&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Shift-Command-C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;拷贝纯文本&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Shift-Command-C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;粘贴&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;粘贴所选内容&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;粘贴转义文本&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Command-V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;粘贴转义的所选内容&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Shift-Command-V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;查找&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;查找下一个&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-G&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;查找上一个&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-Shift-G&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;使用选定的文本查找&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-E&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;跳到选定的文本&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-J&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;全选&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;打开字符检视器&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Command-Space&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="使用标记和书签"&gt;使用标记和书签&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;操作&lt;/th&gt;
&lt;th style="text-align: left"&gt;快捷键&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;标记&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-U&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;标记为书签&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Command-U&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;取消标记&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-U&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;标记命令行并发送返回结果&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-Return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;发送返回结果但不标记&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-Return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;插入书签&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;插入包含名称的书签&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Shift-Command-M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;跳到上一个标记&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-上箭头键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;跳到下一个标记&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-下箭头键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;跳到上一个书签&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Command-上箭头键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;跳到下一个书签&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Command-下箭头键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;清除到上一个标记&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-L&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;清除到上一个书签&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Command-L&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;清除到开头&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;在标记之间选择&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-A&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="其他快捷键"&gt;其他快捷键&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;操作&lt;/th&gt;
&lt;th style="text-align: left"&gt;快捷键&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;进入或退出全屏幕&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Command-F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;显示或隐藏颜色&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;打开“终端”设置&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-逗号键 (,)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;中断&lt;/td&gt;
&lt;td style="text-align: left"&gt;键入 Command-句点键 (.) 等于在命令行上输入 Control-C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;打印&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-P&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;软重置终端仿真器状态&lt;/td&gt;
&lt;td style="text-align: left"&gt;Option-Command-R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;硬重置终端仿真器状态&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Option-Command-R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;打开 URL&lt;/td&gt;
&lt;td style="text-align: left"&gt;按住 Command 键并连按 URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;添加至文件的完整路径&lt;/td&gt;
&lt;td style="text-align: left"&gt;从“访达”将文件拖移到“终端”窗口中&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;将文本导出为&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;将选定的文本导出为&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;反向搜索命令历史&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;开关“允许鼠标报告”选项&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;开关“将 Option 键用作 Meta 键”选项&lt;/td&gt;
&lt;td style="text-align: left"&gt;Command-Option-O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;显示备用屏幕&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-下箭头键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;隐藏备用屏幕&lt;/td&gt;
&lt;td style="text-align: left"&gt;Shift-Command-上箭头键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;打开所选内容的 man 页面&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Shift-Command-问号键 (?)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;搜索所选内容的 man 页面索引&lt;/td&gt;
&lt;td style="text-align: left"&gt;Control-Option-Command-斜杠 (/)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;完整的目录或文件名称&lt;/td&gt;
&lt;td style="text-align: left"&gt;在命令行上，键入一个或多个字符，然后按下 Tab 键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;显示可能的目录或文件名称补全列表&lt;/td&gt;
&lt;td style="text-align: left"&gt;在命令行上，键入一个或多个字符，然后按下 Tab 键两次&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>markdown小抄表</title><link>https://yecnay.net/posts/tech/markdown%E5%B0%8F%E6%8A%84%E8%A1%A8/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/markdown%E5%B0%8F%E6%8A%84%E8%A1%A8/</guid><description/></item><item><title>Nginx 配置与实战</title><link>https://yecnay.net/posts/tech/nginx-%E9%85%8D%E7%BD%AE%E4%B8%8E%E5%AE%9E%E6%88%98/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/nginx-%E9%85%8D%E7%BD%AE%E4%B8%8E%E5%AE%9E%E6%88%98/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器，而且支持热部署，几乎可以做到 7 * 24 小时不间断运行，即使运行几个月也不需要重新启动，还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量，其占用内存少、并发能力强、能支持高达 5w 个并发连接数，最重要的是， Nginx 是免费的并可以商业化，配置使用也比较简单。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nginx特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高并发、高性能；&lt;/li&gt;
&lt;li&gt;模块化架构使得它的扩展性非常好；&lt;/li&gt;
&lt;li&gt;异步非阻塞的事件驱动模型这点和 Node.js 相似；&lt;/li&gt;
&lt;li&gt;相对于其它服务器来说它可以连续几个月甚至更长而不需要重启服务器使得它具有高可靠性；&lt;/li&gt;
&lt;li&gt;热部署、平滑升级；&lt;/li&gt;
&lt;li&gt;完全开源，生态繁荣；&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更多内容查看这篇：《 &lt;a href="https://www.cnblogs.com/librarookie/p/18779489"&gt;Nginx 离线安装与介绍&lt;/a&gt; 》&lt;/p&gt;
&lt;h2 id="一配置nginxconf"&gt;一、配置（nginx.conf）&lt;/h2&gt;
&lt;p&gt;nginx.conf 配置文件的语法规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;配置文件由 &lt;code&gt;指令&lt;/code&gt; 与 &lt;code&gt;指令块&lt;/code&gt; 构成;&lt;/li&gt;
&lt;li&gt;每条指令以 &lt;code&gt;;&lt;/code&gt; 分号结尾，指令与参数间以空格符号分隔;&lt;/li&gt;
&lt;li&gt;指令块以 &lt;code&gt;{}&lt;/code&gt; 大括号将多条指令组织在一起;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;include&lt;/code&gt; 语句允许组合多个配置文件以提升可维护性;&lt;/li&gt;
&lt;li&gt;通过 &lt;code&gt;#&lt;/code&gt; 符号添加注释，提高可读性;&lt;/li&gt;
&lt;li&gt;通过 &lt;code&gt;$&lt;/code&gt; 符号使用变量;&lt;/li&gt;
&lt;li&gt;部分指令的参数支持正则表达式，例如常用的 location 指令.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nginx 的典型配置示例：&lt;/p&gt;
&lt;p&gt;&lt;img alt="202503112016964" loading="lazy" src="https://gitee.com/librarookie/picgo/raw/master/img/202503112016964.png"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;main 全局配置，对全局生效；&lt;/li&gt;
&lt;li&gt;events 配置影响 Nginx 服务器与用户的网络连接；&lt;/li&gt;
&lt;li&gt;http 配置代理，缓存，日志定义等绝大多数功能和第三方模块的配置；&lt;/li&gt;
&lt;li&gt;server 配置虚拟主机的相关参数，一个 http 块中可以有多个 server 块；&lt;/li&gt;
&lt;li&gt;location 用于配置匹配的 uri ；&lt;/li&gt;
&lt;li&gt;upstream 配置后端服务器具体地址，负载均衡配置不可或缺的部分；
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#1. main段配置信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;user nginx&lt;span class="p"&gt;;&lt;/span&gt; 运行用户，默认即是nginx，可以不进行设置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;worker_processes auto&lt;span class="p"&gt;;&lt;/span&gt; 进程数，一般设置为和 CPU 核数一样
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;error_log /var/log/nginx/error.log warn&lt;span class="p"&gt;;&lt;/span&gt; 的错误日志存放目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pid /var/run/nginx.pid&lt;span class="p"&gt;;&lt;/span&gt; 服务启动时的 pid 存放位置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#2. events段配置信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;events &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; use epoll&lt;span class="p"&gt;;&lt;/span&gt; 使用epoll的I/O模型&lt;span class="o"&gt;(&lt;/span&gt;缺省会自动选择一个最适合你操作系统的&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; worker_connections 1024&lt;span class="p"&gt;;&lt;/span&gt; 每个进程允许最大并发数
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#3. http段配置信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#配置使用最频繁的部分，代理、缓存、日志定义等绝大多数功能和第三方模块的配置都在这里设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 设置日志模式
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; log_format main &lt;span class="s1"&gt;&amp;#39;$remote_addr - $remote_user [$time_local] &amp;#34;$request&amp;#34; &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;$status $body_bytes_sent &amp;#34;$http_referer&amp;#34; &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#34;$http_user_agent&amp;#34; &amp;#34;$http_x_forwarded_for&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; access_log /var/log/nginx/access.log main&lt;span class="p"&gt;;&lt;/span&gt; 访问日志存放位置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sendfile on&lt;span class="p"&gt;;&lt;/span&gt; 开启高效传输模式
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tcp_nopush on&lt;span class="p"&gt;;&lt;/span&gt; 减少网络报文段的数量
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tcp_nodelay on&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; keepalive_timeout 65&lt;span class="p"&gt;;&lt;/span&gt; 保持连接的时间，也叫超时时间，单位秒
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; types_hash_max_size 2048&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; include /etc/nginx/mime.types&lt;span class="p"&gt;;&lt;/span&gt; 文件扩展名与类型映射表
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; default_type application/octet-stream&lt;span class="p"&gt;;&lt;/span&gt; 默认文件类型
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; . server段配置信息
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; server &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; listen 80&lt;span class="p"&gt;;&lt;/span&gt; 配置监听的端口
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; server_name localhost&lt;span class="p"&gt;;&lt;/span&gt; 配置的域名
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; . location段配置信息
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; location / &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; root /usr/share/nginx/html&lt;span class="p"&gt;;&lt;/span&gt; 网站根目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; index index.html index.htm&lt;span class="p"&gt;;&lt;/span&gt; 默认首页文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; deny 172.168.22.11&lt;span class="p"&gt;;&lt;/span&gt; 禁止访问的ip地址，可以为all
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; allow 172.168.33.44； 允许访问的ip地址，可以为all
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; error_page &lt;span class="m"&gt;500&lt;/span&gt; &lt;span class="m"&gt;502&lt;/span&gt; &lt;span class="m"&gt;503&lt;/span&gt; &lt;span class="m"&gt;504&lt;/span&gt; /50x.html&lt;span class="p"&gt;;&lt;/span&gt; 默认50x对应的访问页面
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; error_page &lt;span class="m"&gt;400&lt;/span&gt; &lt;span class="m"&gt;404&lt;/span&gt; error.html&lt;span class="p"&gt;;&lt;/span&gt; 同上
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 加载子配置项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; include /etc/nginx/conf.d/*.conf&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="11-内置变量"&gt;1.1 内置变量&lt;/h3&gt;
&lt;p&gt;nginx 常用的内置全局变量，你可以在配置中随意使用，点此查看效果： &lt;a href="https://www.cnblogs.com/librarookie/p/#%E5%86%85%E7%BD%AE%E5%8F%98%E9%87%8F%E5%AE%9E%E4%BE%8B%E6%BC%94%E7%A4%BA" title="实例传送阵"&gt;内置变量实例演示&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Nginx日志按天切割、压缩，并自动清理 30 天前的旧日志文件</title><link>https://yecnay.net/posts/tech/nginx%E6%97%A5%E5%BF%97%E6%8C%89%E5%A4%A9%E5%88%87%E5%89%B2%E5%8E%8B%E7%BC%A9%E5%B9%B6%E8%87%AA%E5%8A%A8%E6%B8%85%E7%90%86-30-%E5%A4%A9%E5%89%8D%E7%9A%84%E6%97%A7%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/nginx%E6%97%A5%E5%BF%97%E6%8C%89%E5%A4%A9%E5%88%87%E5%89%B2%E5%8E%8B%E7%BC%A9%E5%B9%B6%E8%87%AA%E5%8A%A8%E6%B8%85%E7%90%86-30-%E5%A4%A9%E5%89%8D%E7%9A%84%E6%97%A7%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6/</guid><description>&lt;hr&gt;
&lt;p&gt;title: Nginx日志按天切割、压缩，并自动清理 30 天前的旧日志文件
source: &lt;a href="https://www.cnblogs.com/ydswin/p/18664322"&gt;https://www.cnblogs.com/ydswin/p/18664322&lt;/a&gt;
author:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;&lt;a href="https://yecnay.net/tags/dashery/"&gt;dashery&lt;/a&gt;&amp;rdquo;
published: 2025-01-10
created: 2025-07-17
tags:&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;以下是一个完整的 Shell 脚本，用于实现 Nginx 日志按天切割、压缩，并自动清理 30 天前的旧日志文件。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="脚本内容"&gt;脚本内容&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 定义日志目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;LOG_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/var/log/nginx&amp;#34;&lt;/span&gt; Nginx 日志目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DAYS_TO_KEEP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt; 保留最近多少天的日志
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 检查日志目录是否存在&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -d &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;错误：日志目录 &lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt; 不存在！&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 获取昨天的日期（用于日志切割）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;YESTERDAY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;date -d &lt;span class="s2"&gt;&amp;#34;yesterday&amp;#34;&lt;/span&gt; +%Y-%m-%d&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 切割日志文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -f &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/access.log&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mv &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/access.log&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/access_&lt;/span&gt;&lt;span class="nv"&gt;$YESTERDAY&lt;/span&gt;&lt;span class="s2"&gt;.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -f &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/error.log&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mv &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/error.log&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/error_&lt;/span&gt;&lt;span class="nv"&gt;$YESTERDAY&lt;/span&gt;&lt;span class="s2"&gt;.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 向 Nginx 主进程发送 USR1 信号，重新打开日志文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -f /var/run/nginx.pid &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;kill&lt;/span&gt; -USR1 &lt;span class="k"&gt;$(&lt;/span&gt;cat /var/run/nginx.pid&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 压缩昨天的日志文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -f &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/access_&lt;/span&gt;&lt;span class="nv"&gt;$YESTERDAY&lt;/span&gt;&lt;span class="s2"&gt;.log&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gzip &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/access_&lt;/span&gt;&lt;span class="nv"&gt;$YESTERDAY&lt;/span&gt;&lt;span class="s2"&gt;.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -f &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/error_&lt;/span&gt;&lt;span class="nv"&gt;$YESTERDAY&lt;/span&gt;&lt;span class="s2"&gt;.log&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gzip &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/error_&lt;/span&gt;&lt;span class="nv"&gt;$YESTERDAY&lt;/span&gt;&lt;span class="s2"&gt;.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 清理 30 天前的旧日志文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; -type f -name &lt;span class="s2"&gt;&amp;#34;access_*.log.gz&amp;#34;&lt;/span&gt; -mtime +&lt;span class="nv"&gt;$DAYS_TO_KEEP&lt;/span&gt; -exec rm -f &lt;span class="o"&gt;{}&lt;/span&gt; &lt;span class="se"&gt;\;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; -type f -name &lt;span class="s2"&gt;&amp;#34;error_*.log.gz&amp;#34;&lt;/span&gt; -mtime +&lt;span class="nv"&gt;$DAYS_TO_KEEP&lt;/span&gt; -exec rm -f &lt;span class="o"&gt;{}&lt;/span&gt; &lt;span class="se"&gt;\;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 记录操作日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;date &lt;span class="s1"&gt;&amp;#39;+%Y-%m-%d %H:%M:%S&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; - 日志已切割、压缩并清理完成。&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LOG_DIR&lt;/span&gt;&lt;span class="s2"&gt;/nginx_log_cleanup.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="脚本说明"&gt;脚本说明&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;日志目录&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;LOG_DIR&lt;/code&gt; 定义了 Nginx 日志文件的存储目录，默认是 &lt;code&gt;/var/log/nginx&lt;/code&gt; 。你可以根据实际路径修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日志切割&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;脚本会将当前的 &lt;code&gt;access.log&lt;/code&gt; 和 &lt;code&gt;error.log&lt;/code&gt; 文件重命名为 &lt;code&gt;access_YYYY-MM-DD.log&lt;/code&gt; 和 &lt;code&gt;error_YYYY-MM-DD.log&lt;/code&gt; ，其中 &lt;code&gt;YYYY-MM-DD&lt;/code&gt; 是前一天的日期。&lt;/li&gt;
&lt;li&gt;通过向 Nginx 主进程发送 &lt;code&gt;USR1&lt;/code&gt; 信号，通知 Nginx 重新打开日志文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日志压缩&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;gzip&lt;/code&gt; 命令将切割后的日志文件压缩为 &lt;code&gt;.gz&lt;/code&gt; 格式，以节省磁盘空间。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日志清理&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;find&lt;/code&gt; 命令查找并删除 30 天前的旧日志文件（文件名格式为 &lt;code&gt;access_*.log.gz&lt;/code&gt; 和 &lt;code&gt;error_*.log.gz&lt;/code&gt; ）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;操作日志&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;每次运行脚本时，会将操作记录到 &lt;code&gt;nginx_log_cleanup.log&lt;/code&gt; 中，方便后续查看。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id="使用方法"&gt;使用方法&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;将脚本保存为文件，例如 &lt;code&gt;/usr/local/bin/rotate_compress_clean_nginx_logs.sh&lt;/code&gt; 。&lt;/li&gt;
&lt;li&gt;赋予脚本执行权限：
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x /usr/local/bin/rotate_compress_clean_nginx_logs.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;手动运行脚本测试：
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usr/local/bin/rotate_compress_clean_nginx_logs.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;如果需要每天自动运行，可以将脚本添加到 crontab 中。例如，每天凌晨 0 点运行：
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;crontab -e
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;添加以下内容：
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; * * * /usr/local/bin/rotate_compress_clean_nginx_logs.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id="注意事项"&gt;注意事项&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;权限问题&lt;/strong&gt;&lt;br&gt;
确保脚本以具有足够权限的用户（如 &lt;code&gt;root&lt;/code&gt; ）运行，否则可能无法删除、重命名或压缩日志文件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试&lt;/strong&gt;&lt;br&gt;
在生产环境中运行之前，建议先在测试环境中验证脚本的正确性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日志轮换&lt;/strong&gt;&lt;br&gt;
如果已经配置了 &lt;code&gt;logrotate&lt;/code&gt; 来管理 Nginx 日志，请确保脚本与 &lt;code&gt;logrotate&lt;/code&gt; 的配置不冲突。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;备份&lt;/strong&gt;&lt;br&gt;
如果需要保留某些重要日志，可以在删除前备份到其他位置。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;压缩文件格式&lt;/strong&gt;&lt;br&gt;
脚本使用 &lt;code&gt;gzip&lt;/code&gt; 压缩日志文件，压缩后的文件格式为 &lt;code&gt;.gz&lt;/code&gt; 。如果需要其他格式（如 &lt;code&gt;.zip&lt;/code&gt; ），可以修改脚本中的压缩命令。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;通过这个脚本，你可以实现 Nginx 日志按天切割、压缩并自动清理旧日志，有效管理磁盘空间并保留必要的日志记录。&lt;/p&gt;</description></item><item><title>obsidian markdown 语法</title><link>https://yecnay.net/posts/tech/obsidian-markdown-%E8%AF%AD%E6%B3%95/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/obsidian-markdown-%E8%AF%AD%E6%B3%95/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-md" data-lang="md"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;所谓跨行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;就是可以有很多行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这里是跨行注释：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 图表
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Obsidian 通过 [&lt;span class="nt"&gt;Mermaid&lt;/span&gt;](&lt;span class="na"&gt;https://mermaid-js.github.io/&lt;/span&gt;) 及其所提供的[&lt;span class="nt"&gt;编译器&lt;/span&gt;](&lt;span class="na"&gt;https://mermaid-js.github.io/mermaid-live-editor&lt;/span&gt;)来为用户提供图表的绘制功能。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;``&lt;span class="sb"&gt;`mermaid
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;sequenceDiagram
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt; Alice-&amp;gt;&amp;gt;+John: 嗨，John，最近怎样？
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt; Alice-&amp;gt;&amp;gt;+John: John，听得到我说话吗？
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt; John--&amp;gt;&amp;gt;-Alice: 嗨，Alice，我能听到！
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt; John--&amp;gt;&amp;gt;-Alice: 最近不错！
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;`&lt;/span&gt;`&lt;span class="sb"&gt;`&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;`&lt;/span&gt;``mermaid
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sequenceDiagram
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Alice-&amp;gt;&amp;gt;+John: 嗨，John，最近怎样？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Alice-&amp;gt;&amp;gt;+John: John，听得到我说话吗？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; John--&amp;gt;&amp;gt;-Alice: 嗨，Alice，我能听到！
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; John--&amp;gt;&amp;gt;-Alice: 最近不错！
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="开发小记"&gt;开发小记&lt;/h2&gt;
&lt;p&gt;总的来说，我们在努力让 Obsidian 的语法不偏离正统的 Markdown 语法太多。总的来看，Obsidian 的语法大多还是基于 CommonMark，包括了一些 GitHub Flavored Markdown（GFM）和 LaTeX，以及我们特有的嵌入文件语法。&lt;/p&gt;</description></item><item><title>Openwrt opkg 批量更新软件</title><link>https://yecnay.net/posts/tech/openwrt-opkg-%E6%89%B9%E9%87%8F%E6%9B%B4%E6%96%B0%E8%BD%AF%E4%BB%B6/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/openwrt-opkg-%E6%89%B9%E9%87%8F%E6%9B%B4%E6%96%B0%E8%BD%AF%E4%BB%B6/</guid><description/></item><item><title>rclone 如何通过WebDAV 链接synology - Google Search</title><link>https://yecnay.net/posts/tech/rclone-%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87webdav-%E9%93%BE%E6%8E%A5synology-google-search/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/rclone-%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87webdav-%E9%93%BE%E6%8E%A5synology-google-search/</guid><description>&lt;hr&gt;
&lt;p&gt;title: &amp;ldquo;rclone 如何通过WebDAV 链接synology - Google Search&amp;rdquo;
source: &amp;ldquo;&lt;a href="https://www.google.com.hk/search?q=rclone+%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87WebDAV+%E9%93%BE%E6%8E%A5synology&amp;amp;sca_esv=83052c8b1ac74795&amp;amp;sxsrf=ANbL-n5BC4hPxpV1mOeOmPy8duv6Y33HYA%3A1768261347558&amp;amp;source=hp&amp;amp;ei=44ZlaYezIPuwkPIP69j9-A4&amp;amp;iflsig=AFdpzrgAAAAAaWWU826MN4C3b7hbxJ2hfcqoNQwW4Ial&amp;amp;aep=22&amp;amp;udm=50&amp;amp;ved=0ahUKEwjHsPXrloeSAxV7GEQIHWtsH-8QteYPCBo&amp;amp;oq=&amp;amp;gs_lp=Egdnd3Mtd2l6IgBIAFAAWABwAHgAkAEAmAEAoAEAqgEAuAEByAEAmAIAoAIAmAMAkgcAoAcAsgcAuAcAwgcAyAcAgAgA&amp;amp;sclient=gws-wiz&amp;amp;mstk=AUtExfBNnod1Fl3lhxi24qi1VlhNecEVlzdnppauum_IMIQPAl_-iiXOX0dV3SAO9hq2vL-3KMCtZqVYOCQVmm8YFqKJV-LZ0hldX63pKz6rZO2LY9Cu3xfedbS67xB3mw4RfLHRZEaQJjh5Y-aUJys-75TYc1PmPt-O2kaDgswvzz_-goLSU72rgBjEyic4i-1EV_b-jdLFpQLSifJZTZNkDHOiEzLJ88pYSH_t-76pZOxLEReFa1ouvLdjltKW37o1v5vJJQvWCnGmIwbhW--uwOarA80kcPMJNnY&amp;amp;csuir=1&amp;amp;mtid=A4dlad3_IfDcptQPycflsAc%22"&gt;https://www.google.com.hk/search?q=rclone+%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87WebDAV+%E9%93%BE%E6%8E%A5synology&amp;amp;sca_esv=83052c8b1ac74795&amp;amp;sxsrf=ANbL-n5BC4hPxpV1mOeOmPy8duv6Y33HYA%3A1768261347558&amp;amp;source=hp&amp;amp;ei=44ZlaYezIPuwkPIP69j9-A4&amp;amp;iflsig=AFdpzrgAAAAAaWWU826MN4C3b7hbxJ2hfcqoNQwW4Ial&amp;amp;aep=22&amp;amp;udm=50&amp;amp;ved=0ahUKEwjHsPXrloeSAxV7GEQIHWtsH-8QteYPCBo&amp;amp;oq=&amp;amp;gs_lp=Egdnd3Mtd2l6IgBIAFAAWABwAHgAkAEAmAEAoAEAqgEAuAEByAEAmAIAoAIAmAMAkgcAoAcAsgcAuAcAwgcAyAcAgAgA&amp;amp;sclient=gws-wiz&amp;amp;mstk=AUtExfBNnod1Fl3lhxi24qi1VlhNecEVlzdnppauum_IMIQPAl_-iiXOX0dV3SAO9hq2vL-3KMCtZqVYOCQVmm8YFqKJV-LZ0hldX63pKz6rZO2LY9Cu3xfedbS67xB3mw4RfLHRZEaQJjh5Y-aUJys-75TYc1PmPt-O2kaDgswvzz_-goLSU72rgBjEyic4i-1EV_b-jdLFpQLSifJZTZNkDHOiEzLJ88pYSH_t-76pZOxLEReFa1ouvLdjltKW37o1v5vJJQvWCnGmIwbhW--uwOarA80kcPMJNnY&amp;amp;csuir=1&amp;amp;mtid=A4dlad3_IfDcptQPycflsAc&amp;quot;&lt;/a&gt;
author:
published:
created: 2026-01-13
description:
tags:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;clippings&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;rclone 如何通过WebDAV 链接synology&lt;/p&gt;
&lt;p&gt;在 2026 年，使用 rclone 通过 WebDAV 连接 Synology (群晖) NAS 的过程主要分为两步：在 NAS 上启用服务以及在 rclone 中进行配置。&lt;/p&gt;
&lt;p&gt;第一步：在 Synology NAS 上启用 WebDAV&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;安装套件&lt;/strong&gt; ：登录 DSM，在 &lt;strong&gt;套件中心 (Package Center)&lt;/strong&gt; 搜索并安装 &lt;strong&gt;WebDAV Server&lt;/strong&gt; 。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;启用端口&lt;/strong&gt; ：打开 WebDAV Server 应用程序。
&lt;ul&gt;
&lt;li&gt;勾选 &lt;strong&gt;启用 HTTP&lt;/strong&gt; (默认端口 5005) 或 &lt;strong&gt;启用 HTTPS&lt;/strong&gt; (默认端口 5006，推荐使用 HTTPS 以保证数据安全)。&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;应用&lt;/strong&gt; 保存设置。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设置权限&lt;/strong&gt; ：
&lt;ul&gt;
&lt;li&gt;前往 &lt;strong&gt;控制面板 &amp;gt; 用户账号 (或用户与群组)&lt;/strong&gt; ，选择目标用户并点击 &lt;strong&gt;编辑&lt;/strong&gt; 。&lt;/li&gt;
&lt;li&gt;在 &lt;strong&gt;应用程序&lt;/strong&gt; 选项卡中，确保该用户对 &lt;strong&gt;WebDAV Server&lt;/strong&gt; 的访问权限为 &lt;strong&gt;允许&lt;/strong&gt; 。&lt;/li&gt;
&lt;li&gt;确保该用户对需要访问的 &lt;strong&gt;共享文件夹&lt;/strong&gt; 拥有读写权限。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;第二步：在 rclone 中配置连接&lt;/p&gt;</description></item><item><title>sing-box 基础教程：sing-box 的配置方法和使用教程</title><link>https://yecnay.net/posts/tech/sing-box-%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8Bsing-box-%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95%E5%92%8C%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/sing-box-%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8Bsing-box-%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95%E5%92%8C%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</guid><description>&lt;hr&gt;
&lt;h2 id="tags"&gt;title: sing-box 基础教程：sing-box 的配置方法和使用教程
source: &lt;a href="https://icloudnative.io/posts/sing-box-tutorial/"&gt;https://icloudnative.io/posts/sing-box-tutorial/&lt;/a&gt;
author: []
published: 2024-01-14
created: 2024-12-04
description: 全面解析 sing-box：超越 *ray core 和 clash 的下一代通用代理工具。了解其支持的丰富协议，免费客户端，以及如何轻松设置全局透明代理。适用于 Android、iOS、macOS，Linux，及更多平台。
tags:&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt; sing-box 是什么
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="https://icloudnative.io/go/?target=aHR0cHM6Ly9naXRodWIuY29tL1NhZ2VyTmV0L3NpbmctYm94"&gt;sing-box&lt;/a&gt; 是新一代超强通用代理工具，对标 *ray core 与 clash，而且它的性能以及支持的协议类型已经超过了 *ray core 与 clash。目前支持以下协议：&lt;/p&gt;
&lt;p&gt;入站：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shadowsocks(including shadowsocks2022)&lt;/li&gt;
&lt;li&gt;Vmess&lt;/li&gt;
&lt;li&gt;Trojan&lt;/li&gt;
&lt;li&gt;Naive&lt;/li&gt;
&lt;li&gt;Hysteria&lt;/li&gt;
&lt;li&gt;ShadowTLS&lt;/li&gt;
&lt;li&gt;Vless&lt;/li&gt;
&lt;li&gt;Tuic&lt;/li&gt;
&lt;li&gt;Tun&lt;/li&gt;
&lt;li&gt;Redirect&lt;/li&gt;
&lt;li&gt;TProxy&lt;/li&gt;
&lt;li&gt;Socks&lt;/li&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;出站：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shadowsocks(including shadowsocks2022)&lt;/li&gt;
&lt;li&gt;Vmess&lt;/li&gt;
&lt;li&gt;Trojan&lt;/li&gt;
&lt;li&gt;Wireguard&lt;/li&gt;
&lt;li&gt;Hysteria&lt;/li&gt;
&lt;li&gt;ShadowTLS&lt;/li&gt;
&lt;li&gt;ShadowsocksR&lt;/li&gt;
&lt;li&gt;VLESS&lt;/li&gt;
&lt;li&gt;Tuic&lt;/li&gt;
&lt;li&gt;Hysteria2&lt;/li&gt;
&lt;li&gt;Tor&lt;/li&gt;
&lt;li&gt;SSH&lt;/li&gt;
&lt;li&gt;DNS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;除了命令行客户端以外，还提供了图形界面客户端，图形界面支持 Android、iOS、macOS 以及 Apple tvOS，Windows 暂时不支持，还在施工中 🚧&lt;/p&gt;</description></item><item><title>Tmux 使用教程</title><link>https://yecnay.net/posts/tech/tmux-%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/tmux-%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</guid><description/></item><item><title>记账神器Beancount教程</title><link>https://yecnay.net/posts/tech/%E8%AE%B0%E8%B4%A6%E7%A5%9E%E5%99%A8beancount%E6%95%99%E7%A8%8B/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/%E8%AE%B0%E8%B4%A6%E7%A5%9E%E5%99%A8beancount%E6%95%99%E7%A8%8B/</guid><description>&lt;h1 id="记账神器-beancount-教程"&gt;记账神器 Beancount 教程&lt;/h1&gt;
&lt;p&gt;记了几年账，工具用过随手记、Excel 甚至 Evernote。通常只记收支，不记收支对应的账户变化。其实知道这种方式很粗浅，容易错记、漏记，并且只能分析收支，无法跟踪个人财务现状。结果则是，虽然记了几年，却很少分析，个人财务状态也没有实质改善。&lt;/p&gt;
&lt;p&gt;几个月前看到 byvoid 分享 Beancount，发现是一款记账神器。我从 7 月 1 日正式使用，如今也有 3 个多月，分享一些经验心得。&lt;/p&gt;
&lt;h2 id="一普通记账-vs-复式记账"&gt;一、普通记账 vs 复式记账&lt;/h2&gt;
&lt;p&gt;Beancount 记账方法叫复式记账。&lt;/p&gt;
&lt;p&gt;把只记录收支的方法称为&lt;strong&gt;普通记账&lt;/strong&gt;（估计是多数人在用的方法）。那么&lt;strong&gt;复式记账&lt;/strong&gt;，除了记录收支，还需记录账户（支付宝、银行卡等）的变动。以一个最简单的例子感受二者的区别：&lt;/p&gt;
&lt;p&gt;假设：7 月 1 日，打车花费 30 元，使用&lt;strong&gt;银行卡&lt;/strong&gt;支付。&lt;/p&gt;
&lt;p&gt;普通记账一般包括日期、收支分类和金额，如下：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;2019-08-28: 交通-打车 -200元
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;复式记账把账户变化也一并记账，如下：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;2019-08-28:
交通-打车 200元
银行卡 -200元
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;复式记账会记录每笔交易的资金流动，各账户变化「有正有负，正负相等」。这便是复式记账的基本原理，称之为「会计恒等式」&lt;/strong&gt;。这种方式能够保证记账准确无误，也能提供更详细的财务分析。&lt;/p&gt;
&lt;p&gt;这句话中的&lt;strong&gt;账户&lt;/strong&gt;是广义的，也可理解为分类，「银行卡」和「交通 - 打车」都是账户。下文中出现账户，若无特别说明，均指广义的账户。&lt;/p&gt;
&lt;h2 id="二beancount-入门"&gt;二、Beancount 入门&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;复式记账是方法论，而 Beancount 则是支持复式记账的工具&lt;/strong&gt;，Beancount 有以下三个优点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;完整个人财务数据比较敏感，Beancount 本地存储，不用担心数据泄露。&lt;/li&gt;
&lt;li&gt;纯文本账本，不依赖特定软件，便于数据迁移。&lt;/li&gt;
&lt;li&gt;Beancount 是开源软件。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;接下来介绍 Beancount 的基础使用。&lt;/p&gt;
&lt;h3 id="安装"&gt;安装&lt;/h3&gt;
&lt;p&gt;beancount 是个 Python 项目，安装好 &lt;a href="https://sspai.com/link?target=https%3A%2F%2Fwww.python.org%2Fdownloads%2F"&gt;python&lt;/a&gt; 后，执行：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pip install beancount
pip install fava
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Fava 是关联软件，为 Beancount 提供一个更漂亮的 Web 界面（如图 1/2/3），建议同时安装。&lt;/p&gt;</description></item><item><title>群晖更新证书</title><link>https://yecnay.net/posts/tech/%E7%BE%A4%E6%99%96%E6%9B%B4%E6%96%B0%E8%AF%81%E4%B9%A6/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/%E7%BE%A4%E6%99%96%E6%9B%B4%E6%96%B0%E8%AF%81%E4%B9%A6/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;SYNO_Scheme&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;SYNO_Hostname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;10.0.0.10&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;SYNO_Port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;2087&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;SYNO_Curl_Insecure&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 如果你用临时管理员模式（默认开启），可以加这个（推荐，本地运行时常用）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;SYNO_USE_TEMP_ADMIN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 如果端口是自定义的 2087，确认 DSM 的 HTTPS 端口确实是这个（通常是 5001）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash /usr/local/share/acme.sh/acme.sh --cron --home /usr/local/share/acme.sh/ --force
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /usr/local/share/acme.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./acme.sh --deploy --home . -d www.turiux.com --deploy-hook synology_dsm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>如何在Debian上设置无人值守更新</title><link>https://yecnay.net/posts/tech/%E5%A6%82%E4%BD%95%E5%9C%A8debian%E4%B8%8A%E8%AE%BE%E7%BD%AE%E6%97%A0%E4%BA%BA%E5%80%BC%E5%AE%88%E6%9B%B4%E6%96%B0/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/%E5%A6%82%E4%BD%95%E5%9C%A8debian%E4%B8%8A%E8%AE%BE%E7%BD%AE%E6%97%A0%E4%BA%BA%E5%80%BC%E5%AE%88%E6%9B%B4%E6%96%B0/</guid><description>&lt;hr&gt;
&lt;p&gt;profileName: yecnay.com
postId: &amp;ldquo;1779&amp;rdquo;
postType: post
categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;640&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description></item><item><title>使用Beancount管理家庭财务</title><link>https://yecnay.net/posts/tech/%E4%BD%BF%E7%94%A8beancount%E7%AE%A1%E7%90%86%E5%AE%B6%E5%BA%AD%E8%B4%A2%E5%8A%A1/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/%E4%BD%BF%E7%94%A8beancount%E7%AE%A1%E7%90%86%E5%AE%B6%E5%BA%AD%E8%B4%A2%E5%8A%A1/</guid><description>&lt;h1 id="使用beancount管理家庭财务"&gt;使用Beancount管理家庭财务&lt;/h1&gt;
&lt;p&gt;今年春节的时候，由于感受到了使用近9年的记账App挖财可能无法长期使用了，我便花了11小时将其迁移到了强大的 &lt;a href="https://www.bmpi.dev/self/beancount-my-accounting-tool-v2/(https://plaintextaccounting.org/)"&gt;纯文本复式记账&lt;/a&gt; 软件 &lt;a href="https://github.com/beancount/beancount"&gt;Beancount&lt;/a&gt; 上，代价就是历史数据无法迁移过来。为了能够将历史数据导出做个备份，在支付了挖财50元VIP季会员费后我拿到了9年的Excel账本，转投Beancount的怀抱，希望能继续花一生记录财富慢慢增值的过程。&lt;/p&gt;
&lt;p&gt;&lt;img alt="img" loading="lazy" src="https://img.bmpi.dev/5159fd77-f548-b3b6-daad-e8771026f4ec.png"&gt;&lt;/p&gt;
&lt;p&gt;对于我的记账史见这篇 &lt;a href="https://www.bmpi.dev/self/my-accounting-tool/"&gt;我的财务管理方案&lt;/a&gt; 文章。放弃使用9年多的工具是挺难的，尤其是历史数据的迁移，但有多种原因促使我不得不选择新的工具：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;从一些挖财App深度用户得知挖财可能要无法使用；&lt;/li&gt;
&lt;li&gt;挖财的数据导出需要VIP权限；&lt;/li&gt;
&lt;li&gt;个人长期的数据托管到商业化的公司手里不仅有可持续使用的问题，还有严重的隐私问题；&lt;/li&gt;
&lt;li&gt;已经被很多人推荐过复式记账神器Beancount的强大；&lt;/li&gt;
&lt;li&gt;Beancount是开源且本地的工具，满足可持续使用与隐私安全的需求。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;选择了Beancount后我便开始了数据迁移与适应新工具的过程了。目前已经使用Beancount近10个月，我的感受是记账类App虽然让我们能更便捷的利用手机记账，但是却让我们失去了记账的乐趣。用复式记账虽然初次使用需要学习一些知识，但是一旦掌握后可长期使用，性价比其实挺高的。&lt;/p&gt;
&lt;p&gt;不过我需要提醒的是，如果你只是想简单记账，或者是想培养记账的习惯，那选择一个记账App也可以，但是如果你看重隐私和可持续使用，那Beancount就是最好的选择。&lt;/p&gt;
&lt;p&gt;这篇文章我并不想写成Beancount的教程类文章，所以对Beancount的入门介绍我推荐看这篇 &lt;a href="https://www.skyue.com/19101819.html"&gt;记账神器Beancount教程&lt;/a&gt; 。之后可以看byvoid的进阶版教程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://byvoid.com/zhs/blog/beancount-bookkeeping-1/"&gt;Beancount复式记账（一）：为什么&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://byvoid.com/zhs/blog/beancount-bookkeeping-2/"&gt;Beancount复式记账（二）：借贷记账法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://byvoid.com/zhs/blog/beancount-bookkeeping-3/"&gt;Beancount复式记账（三）：结余与资产&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当看完这些教程后，相信你已经知道怎么用Beancount记账了。接下来我想分享的是我是如何使用Beancount记账以及如何解决一些特殊记账的场景。&lt;/p&gt;
&lt;h2 id="使用beancount的心理建设"&gt;使用Beancount的心理建设&lt;/h2&gt;
&lt;p&gt;不少人畏惧使用命令行（CLI）和纯文本来记账，尤其是非程序员的群体，但这些只是习惯问题。Beancount的记账是很简单的，比如我们用记账App记录一笔中午吃饭的帐是这样的：&lt;/p&gt;
&lt;p&gt;&lt;img alt="img" loading="lazy" src="https://img.bmpi.dev/614dd539-7a8b-614e-7781-c1d39946e129.png"&gt;&lt;/p&gt;
&lt;p&gt;而用Beancount记账是这样的：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2021-10-01 * &amp;#34;请客吃饭&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Liabilities:CreditCard:CN:PINGAN-6467 -83.0 CNY
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Expenses:Food:Lunch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;看起来用手机记账更直观一些，而且Beancount很难在手机上操作，一般都用电脑来记账。但纯文本的优势在于编辑和存储方便，不需要特定的软件即可编辑内容，尤其是有很多笔账要记录的时候，电脑编辑纯文本效率也更高。&lt;/p&gt;
&lt;p&gt;手机App记账的时间点一般都是随时记录，但Beancount的话我一般是一天一记录，有的人是一周或者一月一记录。看起来用手机随时记录很方便，但用电脑记账的话，需要先在手机上暂存，之后在电脑上统一记录。现在大多人用手机支付都有消费提醒，只需要在晚上记账的时候查看下当天的消费记录就可以记录了。&lt;/p&gt;
&lt;p&gt;我个人感觉手机记账方便只是一个习惯问题，当我切换到电脑记账的时候不适感也就一周，之后感觉和手机记账差不多，就是时间点的不同而已。所以手机记账方便只是一个习惯问题，并不具备啥优势，时间成本也差不多。&lt;/p&gt;
&lt;p&gt;所以说手机记账App和Beancount的差异主要是&lt;code&gt;命令行&lt;/code&gt;、&lt;code&gt;纯文本&lt;/code&gt;和&lt;code&gt;移动端&lt;/code&gt;的差异。这些差异并不是说手机App记账有优势，更主要的是习惯的问题，而习惯的切换成本不过一周时间。带来的好处却是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;数据掌控在自己手里，隐私不会泄露；&lt;/li&gt;
&lt;li&gt;更灵活的记账方式；&lt;/li&gt;
&lt;li&gt;摆脱手机App流水式记账，使用复式记账法专业记账；&lt;/li&gt;
&lt;li&gt;长期可持续的记账方式。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="我的beancount记账流程"&gt;我的Beancount记账流程&lt;/h2&gt;
&lt;p&gt;我的账本结构包括记账的工具都是参考 &lt;a href="https://www.skyue.com/19101819.html"&gt;记账神器Beancount教程&lt;/a&gt; 这篇文章。&lt;/p&gt;
&lt;h3 id="账本建立"&gt;账本建立&lt;/h3&gt;
&lt;p&gt;在&lt;code&gt;accounts&lt;/code&gt;这个目录里存放着：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── assets.bean 资产账户，包括银行卡、信用卡、投资组合、房产、车、加密币钱包、RSU 等账户
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── liabilities.bean 负债账户
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── income.bean 收入类别
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── expenses.bean 支出类别
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── equity.bean 通过 pad 和 balance 初始化资产账户
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── price.bean 自定义货币价格，这是 Beancount 最神奇的地方，可以自定义货币价格，比如美元和人民币的价格，这样在记账的时候就可以自由的记录货币的价格，而不用担心记账的时候货币价格变动的问题。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="assetsbean"&gt;assets.bean&lt;/h4&gt;
&lt;p&gt;&lt;img alt="img" loading="lazy" src="https://img.bmpi.dev/3f09e4aa-6318-36ba-4d94-7296af047f21.png"&gt;&lt;/p&gt;</description></item><item><title>在Debian10上安装和配置Fail2Ban</title><link>https://yecnay.net/posts/tech/%E5%9C%A8debian10%E4%B8%8A%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AEfail2ban/</link><pubDate>Tue, 19 May 2026 15:46:00 +0800</pubDate><guid>https://yecnay.net/posts/tech/%E5%9C%A8debian10%E4%B8%8A%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AEfail2ban/</guid><description>&lt;hr&gt;
&lt;p&gt;profileName: yecnay.com
postId: &amp;ldquo;1686&amp;rdquo;
postType: post
categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description></item><item><title>Archlinux 下 Fcitx5 无法在部分应用输入中文的问题</title><link>https://yecnay.net/posts/tech/archlinux-%E4%B8%8B-fcitx5-%E6%97%A0%E6%B3%95%E5%9C%A8%E9%83%A8%E5%88%86%E5%BA%94%E7%94%A8%E8%BE%93%E5%85%A5%E4%B8%AD%E6%96%87%E7%9A%84%E9%97%AE%E9%A2%98/</link><pubDate>Tue, 19 May 2026 15:45:59 +0800</pubDate><guid>https://yecnay.net/posts/tech/archlinux-%E4%B8%8B-fcitx5-%E6%97%A0%E6%B3%95%E5%9C%A8%E9%83%A8%E5%88%86%E5%BA%94%E7%94%A8%E8%BE%93%E5%85%A5%E4%B8%AD%E6%96%87%E7%9A%84%E9%97%AE%E9%A2%98/</guid><description>&lt;hr&gt;
&lt;p&gt;title: &amp;ldquo;Archlinux 下 Fcitx5 无法在部分应用输入中文的问题&amp;rdquo;
source: &amp;ldquo;&lt;a href="https://blog.flowerinsnow.cn/p/archlinux-%E4%B8%8B-fcitx5-%E6%97%A0%E6%B3%95%E5%9C%A8%E9%83%A8%E5%88%86%E5%BA%94%E7%94%A8%E8%BE%93%E5%85%A5%E4%B8%AD%E6%96%87%E7%9A%84%E9%97%AE%E9%A2%98/%22"&gt;https://blog.flowerinsnow.cn/p/archlinux-%E4%B8%8B-fcitx5-%E6%97%A0%E6%B3%95%E5%9C%A8%E9%83%A8%E5%88%86%E5%BA%94%E7%94%A8%E8%BE%93%E5%85%A5%E4%B8%AD%E6%96%87%E7%9A%84%E9%97%AE%E9%A2%98/&amp;quot;&lt;/a&gt;
author:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;&lt;a href="https://yecnay.net/tags/%E5%86%AC%E8%8A%B1ice%E7%9A%84%E4%B8%93%E6%A0%8F/"&gt;冬花ice的专栏&lt;/a&gt;&amp;rdquo;
published: 2025-05-16
created: 2026-01-15
description: &amp;ldquo;在安装了 Archlinux 并安装了 PlasmaKDE/Wayland、Fcitx5 虚拟键盘（输入法）后，我又通过安装了 QQ、微信、VSCode、IntelliJ IDEA、Minecraft 等应用，出现了一个问题：不能在它们里面使用 Fcitx5 输入中文了，下面是解决经验，仅供参考\n&amp;rdquo;
tags:&lt;/li&gt;
&lt;li&gt;&amp;ldquo;clippings&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;在安装了 Archlinux 并安装了 PlasmaKDE/Wayland、Fcitx5 虚拟键盘（输入法）后，我又通过安装了 QQ、微信、VSCode、IntelliJ IDEA、Minecraft 等应用，出现了一个问题：不能在它们里面使用 Fcitx5 输入中文了，下面是解决经验，仅供参考&lt;/p&gt;
&lt;h2 id="注意"&gt;注意&lt;/h2&gt;
&lt;p&gt;本方法适用于 Archlinux/Fcitx5/KDE Plasma/Wayland，并确定您已经配置好了输入法（如配置了虚拟键盘等）&lt;/p&gt;
&lt;h2 id="通用解决方法添加环境变量"&gt;通用解决方法：添加环境变量&lt;/h2&gt;
&lt;p&gt;最好添加三个环境变量，你可以不去理解它们，如果想要理解，请参阅相关文档（可以在 &lt;a href="https://blog.flowerinsnow.cn/p/archlinux-%E4%B8%8B-fcitx5-%E6%97%A0%E6%B3%95%E5%9C%A8%E9%83%A8%E5%88%86%E5%BA%94%E7%94%A8%E8%BE%93%E5%85%A5%E4%B8%AD%E6%96%87%E7%9A%84%E9%97%AE%E9%A2%98/#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99"&gt;#参考资料&lt;/a&gt; 中参阅）&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;1
2
3
XMODIFIERS=@im=fcitx
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;您可以通过修改 &lt;code&gt;/etc/environment&lt;/code&gt; ，或软件启动脚本，或软件内部设置实现它&lt;/p&gt;
&lt;h3 id="例启动命令行"&gt;例：启动命令行&lt;/h3&gt;
&lt;p&gt;您可以在命令前添加它们以添加应用程序的环境变量&lt;/p&gt;
&lt;p&gt;bash&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;1
XMODIFIERS=@im=fcitx GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx your_command_here
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="对于-electron-应用的解决方法"&gt;对于 Electron 应用的解决方法&lt;/h2&gt;
&lt;p&gt;可以为 Electron 应用添加标记来修复这个问题，这个方法同样对 chromium 内核的应用有效&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;1
2
3
--enable-features=UseOzonePlatform
--ozone-platform-hint=wayland
--enable-wayland-ime
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果你是 Electron 应用遇到了这个问题，那么可以按照如下步骤添加启动 flags&lt;/p&gt;</description></item><item><title>Linux cut 命令</title><link>https://yecnay.net/posts/tech/linux-cut-%E5%91%BD%E4%BB%A4/</link><pubDate>Tue, 12 May 2026 17:47:51 +0800</pubDate><guid>https://yecnay.net/posts/tech/linux-cut-%E5%91%BD%E4%BB%A4/</guid><description/></item><item><title>Bitwarden SSH Agent</title><link>https://yecnay.net/posts/tech/bitwarden-ssh-agent/</link><pubDate>Fri, 08 May 2026 07:32:10 +0800</pubDate><guid>https://yecnay.net/posts/tech/bitwarden-ssh-agent/</guid><description>&lt;hr&gt;
&lt;p&gt;title: &amp;ldquo;Bitwarden SSH Agent&amp;rdquo;
source: &amp;ldquo;&lt;a href="https://bitwarden.com/help/ssh-agent/#tab-linux-6VN1DmoAVFvm7ZWD95curS%22"&gt;https://bitwarden.com/help/ssh-agent/#tab-linux-6VN1DmoAVFvm7ZWD95curS&amp;quot;&lt;/a&gt;
author:
published:
created: 2026-05-08
description: &amp;ldquo;This article provides a guide to setup and use the Bitwarden SSH Agent.&amp;rdquo;
tags:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;clippings&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="ssh-agent"&gt;SSH Agent&lt;/h2&gt;
&lt;p&gt;Bitwarden Password Manager desktop app can act as an SSH Agent to securely encrypt and store your SSH (Secure Shell) keys for use with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Authenticating to servers&lt;/li&gt;
&lt;li&gt;Signing Git commits&lt;/li&gt;
&lt;li&gt;Interacting with SSH based services&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Bitwarden SSH Agent will organize and protect your keys in one secure location. SSH keys can be accessed with the desktop app, web app, browser extension, and mobile app. SSH keys can be generated using the desktop app, web app, and browser extension.&lt;/p&gt;</description></item><item><title>1panel</title><link>https://yecnay.net/posts/tech/1panel/</link><pubDate>Tue, 21 Apr 2026 08:50:21 +0800</pubDate><guid>https://yecnay.net/posts/tech/1panel/</guid><description>&lt;p&gt;备份账号：onedrive
备份名称:turixu.com-1panel
客户端id:745faaa1-7c3f-4252-be0a-4bf5635e1a75
客户端密钥:sxP8Q~TvG5epeBLOuzM7ImvpR3zeFJlZXF_qxdzQ
重定向url:http://localhost:8080
授权码:M.C531_BAY.2.U.DlDHpCon9XbgKZqF9FlhHuzC!oi4BbEXuXOMrePlg3FVf3xjZ8EBNm1q1lcFH8niFiPBnNWdN02SdQEggazGmfQPhDAnkO2KWTBpJN3RaJB5Ve&lt;em&gt;Kz8Us76t&lt;/em&gt;h7ZF09giI5uZXB3XG2Vp4M4t!yZAtBXH!arLztfCrV6&lt;em&gt;DoBD2Y8sPu02s!2h!cp&lt;/em&gt;yRHY4RzQZlX8g3!i!j6stelXbyBMaticY57DWrGo&lt;em&gt;JR8yXqy77Y!x&lt;/em&gt;VWJpTG!nSBpgH5WiNrEBd3FVVfXRqFzd9piQdgZq6owbxS6siwBHGP1!AOYkFuFpCj0latxcFBIPsje48zKHLkQc9uT0J1aWej34fBDoZGj&lt;em&gt;IZHvD8gLceE79FuvzrJ5A&lt;/em&gt;fRDj2GGRmT6ycTg&lt;em&gt;u!S&lt;/em&gt;a1TbupVSZkcgyPnLmltQjZ9R&lt;em&gt;5uWfD9kAz!994Ub1h3s2bIVF5&lt;/em&gt;Ky67allwTxY5JpNLmn4Evez5sFe00jFi9iLg0avlu8VYpILClpwrastjVO*ziHjIgsoPwsu4JV0loIHQjo3QgdVGpifbf5L8CV2DW8JCViYBarOtZwRxuzmMAqRcvMPEUSm0DErqnRQ%24%24
备份目录:/opt/1panel/backup&lt;/p&gt;</description></item><item><title>Synology Drive Linux 按需同步</title><link>https://yecnay.net/posts/tech/synology-drive-linux-%E6%8C%89%E9%9C%80%E5%90%8C%E6%AD%A5/</link><pubDate>Tue, 21 Apr 2026 08:50:21 +0800</pubDate><guid>https://yecnay.net/posts/tech/synology-drive-linux-%E6%8C%89%E9%9C%80%E5%90%8C%E6%AD%A5/</guid><description>&lt;p&gt;截至 2026 年，Synology Drive Client 的&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;按需同步 (On-demand Sync)&lt;/strong&gt; 功能仍==&lt;strong&gt;不支持&lt;/strong&gt; Linux 系统==。该功能目前仅限在 Windows 10 (1809 及以上) 和 macOS (12.3 及以上) 平台上使用。 &lt;/p&gt;
&lt;p&gt;对于 Linux 用户，目前的主要现状与替代方案如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;现状：仅支持“完整同步”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在 Linux 环境下，Synology Drive 客户端会默认下载任务路径下的&lt;strong&gt;所有&lt;/strong&gt;文件到本地磁盘，无法像 Windows/macOS 那样仅显示文件占位符而不占用空间。 &lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;官方折中方案：选择性同步&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;虽然没有“按需下载”，但你可以通过“选择性同步”来减少本地空间占用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;操作方法&lt;/strong&gt;：在任务设置中，进入“同步规则” &amp;gt; “文件夹”，勾选你需要同步的特定文件夹，取消勾选不需要同步的大文件目录。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;局限性&lt;/strong&gt;：未勾选的文件夹在本地文件管理器中完全不可见。 &lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&gt;第三方/进阶替代方案&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由于官方尚未提供 Linux 按需同步功能，社区用户通常采用以下方式实现类似体验：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WebDAV / NFS / SMB 挂载&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;通过将 NAS 文件夹以网络协议的形式挂载到 Linux 本地目录（例如使用 &lt;code&gt;rclone mount&lt;/code&gt; 或系统的“连接到服务器”功能）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优点&lt;/strong&gt;：文件在本地可见，仅在打开时下载（即读即下），不占用硬盘空间。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缺点&lt;/strong&gt;：受网络带宽限制，在大文件预览或断网环境下体验较差。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rclone&lt;/strong&gt;：一款开源工具，支持将 Synology Drive (通过 WebDAV 或 API) 挂载为本地磁盘，效果非常接近按需同步。 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;总结建议&lt;/p&gt;
&lt;p&gt;如果您在 2026 年需要在 Linux 上管理大量 NAS 文件且本地空间不足：&lt;/p&gt;</description></item><item><title>Proxmox VE 9.1.1 屏蔽订阅弹窗提示 - azh3ng</title><link>https://yecnay.net/posts/tech/proxmox-ve-9.1.1-%E5%B1%8F%E8%94%BD%E8%AE%A2%E9%98%85%E5%BC%B9%E7%AA%97%E6%8F%90%E7%A4%BA-azh3ng/</link><pubDate>Tue, 21 Apr 2026 08:50:20 +0800</pubDate><guid>https://yecnay.net/posts/tech/proxmox-ve-9.1.1-%E5%B1%8F%E8%94%BD%E8%AE%A2%E9%98%85%E5%BC%B9%E7%AA%97%E6%8F%90%E7%A4%BA-azh3ng/</guid><description>&lt;hr&gt;
&lt;p&gt;title: &amp;ldquo;Proxmox VE 9.1.1 屏蔽订阅弹窗提示 - azh3ng&amp;rdquo;
source: &amp;ldquo;&lt;a href="https://azh3ng.com/2025/12/17/Proxmox-VE-disable-subscription-notice.htmltext=%E8%BF%99%E6%9D%A1%E5%91%BD%E4%BB%A4%E4%BC%9A%E5%9C%A8,bak%20%E5%90%8E%E7%BC%80%E7%9A%84%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E3%80%82%22"&gt;https://azh3ng.com/2025/12/17/Proxmox-VE-disable-subscription-notice.htmltext=%E8%BF%99%E6%9D%A1%E5%91%BD%E4%BB%A4%E4%BC%9A%E5%9C%A8,bak%20%E5%90%8E%E7%BC%80%E7%9A%84%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E3%80%82&amp;quot;&lt;/a&gt;
author:
published:
created: 2026-03-26
description: &amp;ldquo;Proxmox VE (PVE) 是一款优秀的开源虚拟化管理平台，基于 Debian 并集成了 KVM 和 LXC 虚拟化技术。然而，在使用社区版时，每次登录 Web 管理界面都会弹出订阅提示窗口，虽然不影响功能使用，但频繁出现确实会影响使用体验。本文将介绍如何在 Proxmox VE 9.1.1 版本中屏蔽这个&amp;hellip;&amp;rdquo;
tags:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;clippings&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Proxmox VE (PVE) 是一款优秀的开源虚拟化管理平台，基于 Debian 并集成了 KVM 和 LXC 虚拟化技术。然而，在使用社区版时，每次登录 Web 管理界面都会弹出订阅提示窗口，虽然不影响功能使用，但频繁出现确实会影响使用体验。&lt;/p&gt;
&lt;p&gt;本文将介绍如何在 Proxmox VE 9.1.1 版本中屏蔽这个登录后的订阅提示弹窗。&lt;/p&gt;
&lt;h2 id="操作步骤"&gt;操作步骤&lt;/h2&gt;
&lt;h3 id="1-备份原始文件"&gt;1. 备份原始文件&lt;/h3&gt;
&lt;p&gt;在进行任何修改之前，强烈建议先备份原始的 JavaScript 文件，以便在出现问题时能够快速恢复：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /usr/share/pve-manager/js/pvemanagerlib.js &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /usr/share/pve-manager/js/pvemanagerlib.js.bak
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这条命令会在同目录下创建一个 &lt;code&gt;.bak&lt;/code&gt; 后缀的备份文件。&lt;/p&gt;
&lt;h3 id="2-修改订阅检查代码"&gt;2. 修改订阅检查代码&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;sed&lt;/code&gt; 命令直接修改 JavaScript 文件中的订阅检查逻辑：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;s/Proxmox.Utils.checked_command(Ext.emptyFn);/Ext.emptyFn();\/\* subscription check disabled \*\//g&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usr/share/pve-manager/js/pvemanagerlib.js
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这条命令的作用是将订阅检查函数替换为一个空函数，从而跳过弹窗提示。修改后的代码会添加注释 &lt;code&gt;/* subscription check disabled */&lt;/code&gt; 以便识别。&lt;/p&gt;</description></item><item><title>修复WPS Office的Fcitx5输入法问题 - 星外之神的博客 wszqkzqk Blog</title><link>https://yecnay.net/posts/tech/%E4%BF%AE%E5%A4%8Dwps-office%E7%9A%84fcitx5%E8%BE%93%E5%85%A5%E6%B3%95%E9%97%AE%E9%A2%98-%E6%98%9F%E5%A4%96%E4%B9%8B%E7%A5%9E%E7%9A%84%E5%8D%9A%E5%AE%A2-wszqkzqk-blog/</link><pubDate>Tue, 21 Apr 2026 08:50:20 +0800</pubDate><guid>https://yecnay.net/posts/tech/%E4%BF%AE%E5%A4%8Dwps-office%E7%9A%84fcitx5%E8%BE%93%E5%85%A5%E6%B3%95%E9%97%AE%E9%A2%98-%E6%98%9F%E5%A4%96%E4%B9%8B%E7%A5%9E%E7%9A%84%E5%8D%9A%E5%AE%A2-wszqkzqk-blog/</guid><description>&lt;hr&gt;
&lt;p&gt;title: &amp;ldquo;修复WPS Office的Fcitx5输入法问题 - 星外之神的博客 | wszqkzqk Blog&amp;rdquo;
source: &amp;ldquo;&lt;a href="https://wszqkzqk.github.io/2024/03/09/WPS-Fcitx5/%22"&gt;https://wszqkzqk.github.io/2024/03/09/WPS-Fcitx5/&amp;quot;&lt;/a&gt;
author:
published: 2024-03-09
created: 2026-03-19
description: &amp;ldquo;天下难事，必作于易；天下大事，必作于细&amp;rdquo;
tags:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;clippings&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;以前，Fcitx5一般会要求用户在 &lt;code&gt;/etc/environment&lt;/code&gt; 中添加有关环境变量的配置，例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;XMODIFIERS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;@im&lt;span class="o"&gt;=&lt;/span&gt;fcitx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;GTK_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fcitx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;QT_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fcitx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;SDL_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fcitx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;GLFW_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ibus
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然而，在Wayland合成器中，如果存在这些环境变量，可能会遇到Fcitx5闪烁的情况，可能会影响用户体验。&lt;/p&gt;
&lt;p&gt;Fcitx5在KDE Wayland下建议通过 &lt;code&gt;系统设置-&amp;gt;键盘-&amp;gt;虚拟键盘&lt;/code&gt; 来选择Fcitx5输入法。由于KDE Plasma支持1-3版的Wayland输入法协议，因此，仅建议在环境变量中添加：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;XMODIFIERS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;@im&lt;span class="o"&gt;=&lt;/span&gt;fcitx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其他环境变量不需要添加。&lt;/p&gt;
&lt;p&gt;然而，WPS Office静态链接了Qt5，不受系统的Qt库控制，由于某种原因不能应用这样选择的输入法，导致无法输入中文。&lt;/p&gt;
&lt;h2 id="解决方法"&gt;解决方法&lt;/h2&gt;
&lt;p&gt;由于在以前添加了环境变量的时候，WPS Office是可以正常输入中文的，因此，只要我们单独给WPS Office添加环境变量，就可以解决这个问题。&lt;/p&gt;
&lt;p&gt;单独给WPS Office添加环境变量可以由很多方式实现，比如说编辑WPS Office的启动脚本、使用额外启动脚本替代WPS Office的启动脚本、编辑WPS Office的&lt;code&gt;.desktop&lt;/code&gt; 文件等等。然而，这些方法会在WPS Office的每次更新后失效。&lt;/p&gt;
&lt;p&gt;笔者选择了将WPS Office的&lt;code&gt;.desktop&lt;/code&gt; 文件复制到 &lt;code&gt;~/.local/share/applications&lt;/code&gt; 目录下。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /usr/share/applications/wps-office*.desktop ~/.local/share/applications/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后编辑该文件的启动命令，实现单独给WPS Office添加环境变量。在原有的文件中，找到 &lt;code&gt;Exec=&lt;/code&gt; 一行，形如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;Exec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/bin/wps %F
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;为了单独给WPS Office添加环境变量，我们可以将其修改为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;Exec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;env &lt;span class="nv"&gt;XMODIFIERS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;@im=fcitx&amp;#34;&lt;/span&gt; &lt;span class="nv"&gt;GTK_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;fcitx&amp;#34;&lt;/span&gt; &lt;span class="nv"&gt;QT_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;fcitx&amp;#34;&lt;/span&gt; &lt;span class="nv"&gt;SDL_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fcitx &lt;span class="nv"&gt;GLFW_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ibus /usr/bin/wps %F
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里，我们使用 &lt;code&gt;env&lt;/code&gt; 命令来临时添加环境变量，这样，我们就可以在不修改WPS Office的启动脚本的情况下，实现单独给WPS Office添加环境变量。&lt;/p&gt;</description></item></channel></rss>