<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>网路互联</title><link>https://www.yjlink.cc/</link><description>虚拟化容器,大数据,DBA,中间件,监控。</description><item><title>OpenStack 2025.2 (Flamingo) 运维手册</title><link>https://www.yjlink.cc/?id=3572</link><description>&lt;h1 id=&quot;openstack-20252-flamingo-运维手册&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 24px 0px 16px; padding: 0px; font-size: 32px; color: rgb(37, 43, 58); line-height: 32px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;OpenStack 2025.2 (Flamingo) 运维手册&lt;/h1&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;主机 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;open88&lt;/code&gt; ｜ openEuler 25.09 ｜ Python 3.11.13 ｜ 全部软件与数据落盘 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data&lt;/code&gt;&lt;/p&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;本手册基于本仓库的实际部署成果整理：&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;组件简介 → 运维命令 → 故障解决 → 速查附录&lt;/span&gt;。 与 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-2025.2-Flamingo-%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.md&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;OpenStack-2025.2-Flamingo-部署文档.md&lt;/code&gt;&lt;/a&gt; 的分工是： 部署文档讲「怎么装」，本手册讲「装好之后怎么用、怎么看、怎么修」。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;white-space: normal; border-width: 1px 0px 0px; border-style: solid none none; border-color: rgb(227, 227, 238) currentcolor currentcolor; border-image: none; box-sizing: content-box; margin: 16px 0px; padding: 0px; color: inherit; height: 0px; overflow: visible; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;h2 id=&quot;文档导航&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E6%96%87%E6%A1%A3%E5%AF%BC%E8%88%AA&quot; name=&quot;文档导航&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;文档导航&lt;/h2&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;章节&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;内容&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;适用场景&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#1-openstack-%E7%AE%80%E4%BB%8B&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;1. OpenStack 简介&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;定位、核心抽象、组件架构、请求链路&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;建立整体认知&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#2-%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E4%B8%8E%E8%BF%90%E7%BB%B4%E7%BA%A6%E5%AE%9A&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;2. 运行环境与运维约定&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;安装路径、凭据、服务清单、统一操作方式&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;每次登录机器前扫一眼&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#3-%E5%90%84%E7%BB%84%E4%BB%B6%E8%BF%90%E7%BB%B4%E5%91%BD%E4%BB%A4&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;3. 各组件运维命令&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;keystone/glance/placement/nova/neutron/horizon/cinder&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;日常巡检与操作&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#4-%E6%95%85%E9%9A%9C%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;4. 故障解决方法&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;分层诊断法 + 各服务真实故障案例（含深度剖析）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;出问题时按图索骥&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#5-%E9%99%84%E5%BD%95&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;5. 附录&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;端口、路径、单元、自检清单、危险操作&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;随手查&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr style=&quot;white-space: normal; border-width: 1px 0px 0px; border-style: solid none none; border-color: rgb(227, 227, 238) currentcolor currentcolor; border-image: none; box-sizing: content-box; margin: 16px 0px; padding: 0px; color: inherit; height: 0px; overflow: visible; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;h2 id=&quot;1-openstack-简介&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#1-openstack-%E7%AE%80%E4%BB%8B&quot; name=&quot;1-openstack-简介&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;1. OpenStack 简介&lt;/h2&gt;&lt;h3 id=&quot;11-它是什么&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#11-%E5%AE%83%E6%98%AF%E4%BB%80%E4%B9%88&quot; name=&quot;11-它是什么&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;1.1 它是什么&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;OpenStack 是一套&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;开源的云计算基础设施管理平台&lt;/span&gt;（IaaS）。它不产生算力，而是把一堆物理资源 （CPU、内存、磁盘、网络）抽象成可编程的 API，再以「项目（Project）→ 资源配额 → 实例/卷/网络」 的模型交付给用户。可以把它理解为&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;数据中心的操作系统&lt;/span&gt;：&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;对上：提供 REST API + Web 控制台 + CLI，一切操作都可脚本化；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;对下：驱动 libvirt/KVM、LVM/iSCSI、OVS/Linux bridge、MariaDB、RabbitMQ 等既有系统组件；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;对内：各服务&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;互相通过 keystone 认证、通过消息队列解耦&lt;/span&gt;，可独立部署与横向扩展。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;本仓库使用的是 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;2025.2 (Flamingo)&lt;/span&gt; 发行版，以源码 tarball + venv 方式部署在&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;单节点&lt;/span&gt;上， 共 7 个服务，属于「最小可用集群」，适合学习、验证与轻量自用。&lt;/p&gt;&lt;h3 id=&quot;12-五个必须先理解的概念&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#12-%E4%BA%94%E4%B8%AA%E5%BF%85%E9%A1%BB%E5%85%88%E7%90%86%E8%A7%A3%E7%9A%84%E6%A6%82%E5%BF%B5&quot; name=&quot;12-五个必须先理解的概念&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;1.2 五个必须先理解的概念&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;概念&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;含义&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;本环境取值&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;Region&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;地理/逻辑分区，一套端点集合&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;RegionOne&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;Service / Endpoint&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;服务类型与访问地址，注册在 keystone 的&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;服务目录&lt;/span&gt;中&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;见 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#51-%E7%AB%AF%E5%8F%A3%E4%B8%8E%E6%9C%8D%E5%8A%A1%E7%9B%AE%E5%BD%95&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;5.1 端口表&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;Domain&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;用户与项目的命名空间，多租户隔离的顶层&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Default&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;Project（Tenant）&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;资源归属与配额单位；实例、卷、网络都属于某个项目&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;admin&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;service&lt;/code&gt; 及自建项目&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;User / Role&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;身份与权限；角色决定 API 能否通过 policy 校验&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;admin&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;service&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;member&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;reader&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;一条最常见的误解：&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;OpenStack 里的资源不&amp;quot;属于节点&amp;quot;，而&amp;quot;属于项目&amp;quot;&lt;/span&gt;。所以排障时先问 「这个实例属于哪个项目、用哪个 token 操作的」，比问「它跑在哪台机器」更有效。&lt;/p&gt;&lt;h3 id=&quot;13-组件架构与职责&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#13-%E7%BB%84%E4%BB%B6%E6%9E%B6%E6%9E%84%E4%B8%8E%E8%81%8C%E8%B4%A3&quot; name=&quot;13-组件架构与职责&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;1.3 组件架构与职责&lt;/h3&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-text&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;┌──────────────────────────────────────────┐&lt;br/&gt; &amp;nbsp; 用户/CLI/浏览器 →│ horizon (:80/dashboard) &amp;nbsp;Web 控制台 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;│&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;└──────────────────┬───────────────────────┘&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ REST (token)&lt;br/&gt; &amp;nbsp; ┌───────────────────────────────────▼───────────────────────────────────┐&lt;br/&gt; &amp;nbsp; │ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; keystone (:5000/v3) &amp;nbsp;认证 + 服务目录 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │&lt;br/&gt; &amp;nbsp; └───────┬───────────────┬───────────────┬───────────────┬───────────────┘&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │&lt;br/&gt; &amp;nbsp; &amp;nbsp; ┌─────▼─────┐ &amp;nbsp; ┌─────▼─────┐ &amp;nbsp; ┌─────▼──────┐ &amp;nbsp;┌─────▼──────┐&lt;br/&gt; &amp;nbsp; &amp;nbsp; │ glance &amp;nbsp; &amp;nbsp;│ &amp;nbsp; │ placement │ &amp;nbsp; │ nova &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp;│ cinder &amp;nbsp; &amp;nbsp; │&lt;br/&gt; &amp;nbsp; &amp;nbsp; │ :9292 &amp;nbsp; &amp;nbsp; │ &amp;nbsp; │ :8778 &amp;nbsp; &amp;nbsp; │ &amp;nbsp; │ :8774/8775 │ &amp;nbsp;│ :8776 &amp;nbsp; &amp;nbsp; &amp;nbsp;│&lt;br/&gt; &amp;nbsp; &amp;nbsp; │ 镜像 &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; │ 资源账本 &amp;nbsp; │ &amp;nbsp; │ 计算 &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp;│ 块存储 &amp;nbsp; &amp;nbsp; │&lt;br/&gt; &amp;nbsp; &amp;nbsp; └───────────┘ &amp;nbsp; └───────────┘ &amp;nbsp; └─────┬──────┘ &amp;nbsp;└─────┬──────┘&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ┌─────▼──────┐ &amp;nbsp;┌─────▼──────┐&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ libvirtd &amp;nbsp; │ &amp;nbsp;│ LVM + iSCSI│&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ KVM/QEMU &amp;nbsp; │ &amp;nbsp;│ loop 卷组 &amp;nbsp; │&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; └─────┬──────┘ &amp;nbsp;└────────────┘&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │&lt;br/&gt; &amp;nbsp; &amp;nbsp; ┌─────────────────────────────────────▼─────────────────────────────┐&lt;br/&gt; &amp;nbsp; &amp;nbsp; │ neutron (:9696) &amp;nbsp;OVS agent / DHCP agent / L3 agent / metadata agent │&lt;br/&gt; &amp;nbsp; &amp;nbsp; └───────────────────────────────┬───────────────────────────────────┘&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Open vSwitch（br-int ↔ br-provider）&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; br0 + veth 对 → 物理 LAN&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;各组件一句话定位 + 本机进程形态（决定了你怎么启停它）：&lt;/p&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;组件&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;职责&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;进程形态&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;单元 / 入口&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;关键配置&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;keystone&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;认证、授权、服务目录、令牌签发&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;httpd + mod_wsgi&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;httpd&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:5000&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/keystone/keystone.conf&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;glance&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;镜像的存储与元数据&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;systemd 独立进程&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;glance-api&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:9292&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/glance/glance-api.conf&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;placement&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;计算资源库存与分配账本&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;httpd + mod_wsgi&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;httpd&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:8778&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/placement/placement.conf&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;nova&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;实例生命周期、调度、控制台&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;API 走 httpd；调度/计算走 systemd&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;httpd&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:8774&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:8775&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-{scheduler,conductor,compute,novncproxy}&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/nova/nova.conf&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;neutron&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;二层/三层网络、DHCP、元数据通道&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;systemd 多进程&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-{rpc-server,openvswitch-agent,dhcp-agent,l3-agent,metadata-agent}&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:9696&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/neutron/*&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;horizon&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;Web 控制台&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;httpd + mod_wsgi&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;httpd&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:80/dashboard&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;local_settings.py&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;cinder&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;卷的创建/挂载/快照&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;systemd 独立进程&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-{scheduler,volume,volumes-loop}&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:8776&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/cinder/cinder.conf&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;⚠️ &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;排障第一原则&lt;/span&gt;：先分清服务是「httpd 里的 WSGI 应用」还是「独立 systemd 进程」。 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;keystone / placement / nova-api / horizon&lt;/code&gt; 的问题常出在 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;httpd 权限与 Python 路径&lt;/span&gt;， 而不是 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl status&lt;/code&gt; 里那个 OpenStack 服务名——它们根本没有同名单元。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;14-一次操作背后的完整链路&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#14-%E4%B8%80%E6%AC%A1%E6%93%8D%E4%BD%9C%E8%83%8C%E5%90%8E%E7%9A%84%E5%AE%8C%E6%95%B4%E9%93%BE%E8%B7%AF&quot; name=&quot;14-一次操作背后的完整链路&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;1.4 一次操作背后的完整链路&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;以「创建一台实例」为例，理解这条链路就理解了 90% 的故障定位点：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-text&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;1. 认证 &amp;nbsp; &amp;nbsp;openstack CLI → keystone:5000 换取 X-Subject-Token（含 roles/scope）&lt;br/&gt;2. 取目录 &amp;nbsp;token 中的 service catalog → 得到 nova 端点 http://controller:8774/v2.1&lt;br/&gt;3. 提交 &amp;nbsp; &amp;nbsp;POST /servers → nova-api（httpd + mod_wsgi）写 nova_api 库&lt;br/&gt;4. 调度 &amp;nbsp; &amp;nbsp;nova-scheduler 读 placement 的库存 → 选主机（open88）&lt;br/&gt;5. 消息 &amp;nbsp; &amp;nbsp;nova-conductor → RabbitMQ → nova-compute&lt;br/&gt;6. 资源 &amp;nbsp; &amp;nbsp;nova-compute 调 glance 下载镜像、调 neutron 建 port、通过 privsep 调 libvirt&lt;br/&gt;7. 网络 &amp;nbsp; &amp;nbsp;neutron OVS agent 把 veth 接入 br-int；L3/DHCP agent 建 qrouter/qdhcp 命名空间&lt;br/&gt;8. 回写 &amp;nbsp; &amp;nbsp;compute 逐阶段上报 → DB 状态 ACTIVE；neutron 发 network-vif-plugged 通知 nova&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;任何一个箭头断掉，现象都可能是「实例 ERROR」或「一直 BUILD」，&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;所以必须按链路自底向上查&lt;/span&gt;， 不能看到 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ERROR&lt;/code&gt; 就只翻 nova 日志（详见 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#41-%E5%88%86%E5%B1%82%E8%AF%8A%E6%96%AD%E6%B3%95&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;4.1 分层诊断法&lt;/a&gt;）。&lt;/p&gt;&lt;h3 id=&quot;15-本环境的边界务必知道哪些不是故障&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#15-%E6%9C%AC%E7%8E%AF%E5%A2%83%E7%9A%84%E8%BE%B9%E7%95%8C%E5%8A%A1%E5%BF%85%E7%9F%A5%E9%81%93%E5%93%AA%E4%BA%9B%E4%B8%8D%E6%98%AF%E6%95%85%E9%9A%9C&quot; name=&quot;15-本环境的边界务必知道哪些不是故障&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;1.5 本环境的边界（务必知道哪些&amp;quot;不是故障&amp;quot;）&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;限制&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;运维含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;单节点，未验证多计算节点/HA&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;不要照搬多控文档中的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-manage cell_v2&lt;/code&gt; 扩容步骤&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;cinder 用&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;单机 loop 文件&lt;/span&gt;做卷组，无副本、无 backup&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;卷数据无冗余，宿主机磁盘损坏即丢卷；&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;volumes.img&lt;/code&gt; 不可删除&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;libvirt 未开 autostart&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;宿主机重启后实例是 SHUTOFF&lt;/span&gt;，需手动启动或改配置（见 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#410-%E5%AE%BF%E4%B8%BB%E6%9C%BA%E9%87%8D%E5%90%AF%E5%90%8E%E7%9A%84%E4%B8%89%E7%B1%BB%E5%81%87%E6%95%85%E9%9A%9C&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;4.10&lt;/a&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;单网卡，管理面与实例出口共用 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;enp2s0&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;网络改动有&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;断网风险&lt;/span&gt;，见 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#55-%E5%8D%B1%E9%99%A9%E6%93%8D%E4%BD%9C%E4%B8%8E%E5%9B%9E%E6%BB%9A&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;5.5 危险操作&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;镜像已做 shrink 优化，元数据写回 DB&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;换镜像文件必须同步 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;size/virtual_size/checksum&lt;/code&gt;，否则 glance 404/损坏&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr style=&quot;white-space: normal; border-width: 1px 0px 0px; border-style: solid none none; border-color: rgb(227, 227, 238) currentcolor currentcolor; border-image: none; box-sizing: content-box; margin: 16px 0px; padding: 0px; color: inherit; height: 0px; overflow: visible; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;h2 id=&quot;2-运行环境与运维约定&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#2-%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E4%B8%8E%E8%BF%90%E7%BB%B4%E7%BA%A6%E5%AE%9A&quot; name=&quot;2-运行环境与运维约定&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;2. 运行环境与运维约定&lt;/h2&gt;&lt;h3 id=&quot;21-路径约定全部在-data&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#21-%E8%B7%AF%E5%BE%84%E7%BA%A6%E5%AE%9A%E5%85%A8%E9%83%A8%E5%9C%A8-data&quot; name=&quot;21-路径约定全部在-data&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;2.1 路径约定（全部在 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data&lt;/code&gt;）&lt;/h3&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-text&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;/data/&lt;br/&gt;├── admin-openrc.sh &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # admin 凭据（权限 600，仅 root 可读）&lt;br/&gt;├── src/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 各服务源码包&lt;br/&gt;└── openstack/&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── venv/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 唯一的 Python 运行时（所有 CLI 都在 venv/bin）&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── mysql/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# MariaDB datadir + mysql.sock&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── rabbitmq/{mnesia,log}/&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── keystone/{fernet-keys,fernet-keys-receipts,credential-keys}/&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── glance/images/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 镜像文件实体&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── placement/wsgi.py&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── nova/{wsgi,lock,instances}/&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── neutron/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 含各 *.log&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── cinder/{volumes.img,...} &amp;nbsp; &amp;nbsp;# loop 卷文件&lt;br/&gt; &amp;nbsp; &amp;nbsp;└── horizon/{wsgi,static,error.log}&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;类别&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;路径&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;配置文件&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/{keystone,glance,placement,nova,neutron,cinder}/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;httpd vhost&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/httpd/conf.d/{keystone,placement,nova,neutron,horizon,cinder}.conf&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;systemd 单元&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/usr/lib/systemd/system/&amp;lt;服务&amp;gt;.service&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;运维脚本&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/usr/local/sbin/br0-provider-veth.sh&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/root/{phase1-br0,net-watchdog}.sh&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;为什么要反复强调 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data&lt;/code&gt;&lt;/span&gt;：Python 包、数据库、镜像、卷、日志全在这里。磁盘满、权限错、 或者 SELinux/属主不对，故障会以「看似无关的模块导入失败」形式出现——见 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#42-wsgi--httpd-%E4%B8%8E-venv%E5%85%AD%E7%B1%BB%E5%85%B8%E5%9E%8B%E6%95%85%E9%9A%9C&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;4.2&lt;/a&gt;。&lt;/p&gt;&lt;h3 id=&quot;22-每个-shell-会话开始时的两行准备&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#22-%E6%AF%8F%E4%B8%AA-shell-%E4%BC%9A%E8%AF%9D%E5%BC%80%E5%A7%8B%E6%97%B6%E7%9A%84%E4%B8%A4%E8%A1%8C%E5%87%86%E5%A4%87&quot; name=&quot;22-每个-shell-会话开始时的两行准备&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;2.2 每个 shell 会话开始时的两行准备&lt;/h3&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;export&lt;/span&gt; PATH=/data/openstack/venv/bin:&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$PATH&lt;/span&gt; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 让 openstack / nova-manage / glance-manage 可用&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;source&lt;/span&gt; /data/admin-openrc.sh &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 注入 OS_* 认证变量（文件为 600）&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;权限提醒：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/admin-openrc.sh&lt;/code&gt; 只应 root 可读；若被手工改过，恢复为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;chmod 600 /data/admin-openrc.sh&lt;/code&gt;。&lt;/p&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;若没有现成的 openrc，可手工导出：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;export&lt;/span&gt; OS_AUTH_URL=http://controller:5000/v3 OS_IDENTITY_API_VERSION=3&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;export&lt;/span&gt; OS_USERNAME=admin OS_PASSWORD=ADMIN_PASS&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;export&lt;/span&gt; OS_PROJECT_NAME=admin OS_USER_DOMAIN_NAME=Default&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;export&lt;/span&gt; OS_PROJECT_DOMAIN_NAME=Default OS_REGION_NAME=RegionOne&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;自检三连（任何操作前先确认地基是通的）：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;openstack token issue -f value -c expires &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 认证 OK 才有输出&lt;/span&gt;&lt;br/&gt;openstack service list -f value -c Name &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 服务目录完整&lt;/span&gt;&lt;br/&gt;openstack endpoint list --interface public -f value -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;Service Name&amp;quot;&lt;/span&gt; -c URL&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h3 id=&quot;23-服务清单与统一操作&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#23-%E6%9C%8D%E5%8A%A1%E6%B8%85%E5%8D%95%E4%B8%8E%E7%BB%9F%E4%B8%80%E6%93%8D%E4%BD%9C&quot; name=&quot;23-服务清单与统一操作&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;2.3 服务清单与统一操作&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;本机共 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;18 个相关单元&lt;/span&gt;（基础 6 + OpenStack 12 + 网络自愈 1）：&lt;/p&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;层次&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;单元&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;基础&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;mariadb&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;rabbitmq-server&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;memcached&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openvswitch&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;libvirtd&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;httpd&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;OpenStack&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;glance-api&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-{compute,conductor,scheduler,novncproxy}&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-{rpc-server,openvswitch-agent,dhcp-agent,l3-agent,metadata-agent}&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-{scheduler,volume,volumes-loop}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;网络自愈&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;br0-provider-veth&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;统一的四条命令（把 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;&amp;lt;unit&amp;gt;&lt;/code&gt; 换成上表任意单元）：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl status &amp;lt;unit&amp;gt; --no-pager -l &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 状态 + 最近日志尾部&lt;/span&gt;&lt;br/&gt;systemctl restart &amp;lt;unit&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 重启&lt;/span&gt;&lt;br/&gt;journalctl -u &amp;lt;unit&amp;gt; -n 200 --no-pager &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# systemd 视角日志（含启动失败原因）&lt;/span&gt;&lt;br/&gt;systemctl &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;enable&lt;/span&gt; --now &amp;lt;unit&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 开机自启并立即启动&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;一次看全（巡检最常用）：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl --failed &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 只看失败的，空输出=健康&lt;/span&gt;&lt;br/&gt;systemctl list-units --&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;type&lt;/span&gt;=service --state=running | grep -E \&lt;br/&gt; &amp;nbsp;&lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;glance|nova|neutron|cinder|httpd|mariadb|rabbitmq|memcached|openvswitch|libvirtd&amp;#39;&lt;/span&gt;&lt;br/&gt;systemctl is-active br0-provider-veth&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;不要用 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nohup&lt;/code&gt; 起服务&lt;/span&gt;：宿主会话断开后进程会被回收，表现为「昨天还好好的，今天全没了」。 一律交给 systemd。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;24-服务健康的三层判据&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#24-%E6%9C%8D%E5%8A%A1%E5%81%A5%E5%BA%B7%E7%9A%84%E4%B8%89%E5%B1%82%E5%88%A4%E6%8D%AE&quot; name=&quot;24-服务健康的三层判据&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;2.4 服务健康的三层判据&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;不要只看 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl is-active&lt;/code&gt;，它只能说明进程在。分层看：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 第 1 层：进程在不在&lt;/span&gt;&lt;br/&gt;systemctl is-active glance-api nova-compute neutron-openvswitch-agent cinder-volume&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 第 2 层：API 通不通（返回码，不看 body）&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;for&lt;/span&gt; p &lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;in&lt;/span&gt; 5000 9292 8778 8774 8775 9696 8776 80; &lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;do&lt;/span&gt;&lt;br/&gt; &amp;nbsp;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;printf&lt;/span&gt; &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%5s -&amp;gt; &amp;#39;&lt;/span&gt; &lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$p&lt;/span&gt;; curl -s -o /dev/null -w &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%{http_code}\n&amp;#39;&lt;/span&gt; --max-time 3 http://controller:&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$p&lt;/span&gt;/ \&lt;br/&gt; &amp;nbsp; &amp;nbsp;|| &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;timeout&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;done&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 第 3 层：各服务自报的家底（agent/后端是否注册、是否 up）&lt;/span&gt;&lt;br/&gt;openstack compute service list &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# nova-scheduler/conductor/compute&lt;/span&gt;&lt;br/&gt;openstack network agent list &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# OVS/DHCP/L3/Metadata 四个 agent&lt;/span&gt;&lt;br/&gt;openstack volume service list &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# cinder-scheduler/cinder-volume&lt;/span&gt;&lt;br/&gt;openstack hypervisor list &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 计算节点是否 up&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;第 3 层最关键&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;active (running)&lt;/code&gt; 却不注册，是本版本最常见的坑（例如缺 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-rpc-server&lt;/code&gt;、 cinder 卷组不存在），此时第 1、2 层都是&amp;quot;绿&amp;quot;的。&lt;/p&gt;&lt;h3 id=&quot;25-日志地图&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#25-%E6%97%A5%E5%BF%97%E5%9C%B0%E5%9B%BE&quot; name=&quot;25-日志地图&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;2.5 日志地图&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;OpenStack 日志完全分散在 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/&lt;/code&gt; 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/log/&lt;/code&gt; 两处，&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;记住这张表能省一半排查时间&lt;/span&gt;：&lt;/p&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;服务&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;日志路径&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;适配场景&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;httpd（keystone/placement/nova-api/horizon）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/log/httpd/{error_log,&amp;lt;vhost&amp;gt;_error.log}&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;&amp;lt;vhost&amp;gt;_access.log&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;500/403、WSGI 导入错误&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;keystone&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/log/httpd/keystone_*.log&lt;/code&gt;（WSGI 无独立日志）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;认证失败、token 问题&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;glance&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/glance/glance-api.log&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;镜像上传/下载失败&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;placement&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/log/httpd/placement_*.log&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;调度报 409/资源不足&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;nova&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/nova/{nova-compute,nova-api-wsgi,nova-conductor,nova-scheduler}.log&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;实例错误、privsep&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;neutron&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/neutron/{neutron-server,openvswitch-agent,dhcp-agent,l3-agent,metadata-agent,rpc-server}.log&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;网络创建、端口绑定&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;cinder&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/cinder/{cinder-volume,cinder-scheduler,cinder-api-wsgi}.log&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;卷创建/挂载失败&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;horizon&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/horizon/error.log&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/log/httpd/horizon_*.log&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;页面 500、按钮消失&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;libvirt/QEMU&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/log/libvirt/qemu/&amp;lt;instance&amp;gt;.log&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;实例起不来、卡引导&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;配套查法：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -f /data/openstack/nova/nova-compute.log &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 边操作边看&lt;/span&gt;&lt;br/&gt;grep -E &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;ERROR|Traceback&amp;#39;&lt;/span&gt; /data/openstack/neutron/*.&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;log&lt;/span&gt; | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -50&lt;br/&gt;journalctl -u nova-compute --since &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;10 min ago&amp;#39;&lt;/span&gt; --no-pager | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -100&lt;br/&gt;virsh domstate instance-00000004 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 从虚拟化层看实例真实状态&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;hr style=&quot;white-space: normal; border-width: 1px 0px 0px; border-style: solid none none; border-color: rgb(227, 227, 238) currentcolor currentcolor; border-image: none; box-sizing: content-box; margin: 16px 0px; padding: 0px; color: inherit; height: 0px; overflow: visible; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;h2 id=&quot;3-各组件运维命令&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#3-%E5%90%84%E7%BB%84%E4%BB%B6%E8%BF%90%E7%BB%B4%E5%91%BD%E4%BB%A4&quot; name=&quot;3-各组件运维命令&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;3. 各组件运维命令&lt;/h2&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;全章默认已执行 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#22-%E6%AF%8F%E4%B8%AA-shell-%E4%BC%9A%E8%AF%9D%E5%BC%80%E5%A7%8B%E6%97%B6%E7%9A%84%E4%B8%A4%E8%A1%8C%E5%87%86%E5%A4%87&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;2.2&lt;/a&gt; 的两行准备： &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;export PATH=/data/openstack/venv/bin:$PATH&lt;/code&gt; 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;source /data/admin-openrc.sh&lt;/code&gt;。 所有 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;&amp;lt;尖括号&amp;gt;&lt;/code&gt; 为占位符，替换后执行。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;31-keystone身份服务&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#31-keystone%E8%BA%AB%E4%BB%BD%E6%9C%8D%E5%8A%A1&quot; name=&quot;31-keystone身份服务&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;3.1 keystone（身份服务）&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;形态&lt;/span&gt;：httpd + mod_wsgi，入口 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/keystone/wsgi.py&lt;/code&gt;，监听 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:5000&lt;/code&gt;。 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;没有&lt;/span&gt; &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;keystone.service&lt;/code&gt; 单元——重启服务是重启 httpd，但&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;只重启 keystone 的 vhost&lt;/span&gt; 更安全。&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 启停与重载（改配置后必须重载，否则仍是旧代码）&lt;/span&gt;&lt;br/&gt;systemctl reload httpd &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 推荐：不中断其它 vhost&lt;/span&gt;&lt;br/&gt;systemctl restart httpd &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 彻底重启（horizon/nova-api 会一起重启）&lt;/span&gt;&lt;br/&gt;apachectl -t &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 改完 /etc/httpd/conf.d/*.conf 先语法检查&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;健康检查&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5&quot; name=&quot;健康检查&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;健康检查&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;curl -s -o /dev/null -w &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%{http_code}\n&amp;#39;&lt;/span&gt; http://controller:5000/v3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 200&lt;/span&gt;&lt;br/&gt;curl -s -o /dev/null -w &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%{http_code}\n&amp;#39;&lt;/span&gt; http://controller:5000/v3/auth/tokens &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 405/400 也算通&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 取 token（验证口令/角色/scope 全链路）&lt;/span&gt;&lt;br/&gt;openstack token issue -f table&lt;br/&gt;openstack token issue -f value -c expires &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 令牌有效期&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;日常操作用户-项目-角色&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E6%97%A5%E5%B8%B8%E6%93%8D%E4%BD%9C%E7%94%A8%E6%88%B7-%E9%A1%B9%E7%9B%AE-%E8%A7%92%E8%89%B2&quot; name=&quot;日常操作用户-项目-角色&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;日常操作（用户 / 项目 / 角色）&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ---- 项目 ----&lt;/span&gt;&lt;br/&gt;openstack project list&lt;br/&gt;openstack project create --domain default --description &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;测试项目&amp;quot;&lt;/span&gt; demo&lt;br/&gt;openstack project show demo -f yaml&lt;br/&gt;openstack project &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; demo --&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;disable&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 禁用（不删）&lt;/span&gt;&lt;br/&gt;openstack project delete demo &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 项目下有资源会拒绝&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ---- 用户 ----&lt;/span&gt;&lt;br/&gt;openstack user list&lt;br/&gt;openstack user create --domain default --project demo --password &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;Str0ng!Pass&amp;#39;&lt;/span&gt; alice&lt;br/&gt;openstack user &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; alice --password &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;NewPass&amp;#39;&lt;/span&gt; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 改密&lt;/span&gt;&lt;br/&gt;openstack user &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; alice --&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;enable&lt;/span&gt; / --&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;disable&lt;/span&gt;&lt;br/&gt;openstack user delete alice&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ---- 角色 ----&lt;/span&gt;&lt;br/&gt;openstack role list&lt;br/&gt;openstack role assignment list --user alice --project demo --names&lt;br/&gt;openstack role add --project demo --user alice member&lt;br/&gt;openstack role add --project demo --user alice admin &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 给项目管理员&lt;/span&gt;&lt;br/&gt;openstack role remove --project demo --user alice admin&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ---- 服务账号（每个服务都需要 service 角色的项目成员关系）----&lt;/span&gt;&lt;br/&gt;openstack role create service&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;for&lt;/span&gt; u &lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;in&lt;/span&gt; nova neutron glance placement cinder; &lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;do&lt;/span&gt;&lt;br/&gt; &amp;nbsp;openstack role add --project service --user &lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$u&lt;/span&gt; service&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;done&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;服务目录endpoint运维&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E6%9C%8D%E5%8A%A1%E7%9B%AE%E5%BD%95endpoint%E8%BF%90%E7%BB%B4&quot; name=&quot;服务目录endpoint运维&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;服务目录（endpoint）运维&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;openstack service list&lt;br/&gt;openstack endpoint list --interface public -f value -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;Service Name&amp;quot;&lt;/span&gt; -c URL&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 新增/修正一个端点（例：glance）&lt;/span&gt;&lt;br/&gt;openstack service create --name glance --description &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;OpenStack Image&amp;quot;&lt;/span&gt; image&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;in&lt;/span&gt; public internal admin; &lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;do&lt;/span&gt;&lt;br/&gt; &amp;nbsp;openstack endpoint create --region RegionOne image &lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$i&lt;/span&gt; http://controller:9292&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;done&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 端点地址写错时：先删再建（endpoint id 从 list 里取）&lt;/span&gt;&lt;br/&gt;openstack endpoint delete &amp;lt;endpoint-id&amp;gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;fernet-密钥与凭据加密&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#fernet-%E5%AF%86%E9%92%A5%E4%B8%8E%E5%87%AD%E6%8D%AE%E5%8A%A0%E5%AF%86&quot; name=&quot;fernet-密钥与凭据加密&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;fernet 密钥与凭据加密&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;ls&lt;/span&gt; -l /data/openstack/keystone/fernet-keys/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 0=staging 1..N 有效&lt;/span&gt;&lt;br/&gt;keystone-manage fernet_rotate --keystone-user root --keystone-group root&lt;br/&gt;keystone-manage fernet_setup --keystone-user root --keystone-group root &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 已存在会覆盖，慎用&lt;/span&gt;&lt;br/&gt;keystone-manage credential_setup --keystone-user root --keystone-group root&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;不要删除 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;fernet-keys&lt;/code&gt; 目录&lt;/span&gt;：删了等价于所有 token 失效 + 加密凭据无法解密， 需要重新 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;fernet_setup&lt;/code&gt; 并让所有客户端重新认证。&lt;/p&gt;&lt;/blockquote&gt;&lt;h4 id=&quot;数据库与升级&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8E%E5%8D%87%E7%BA%A7&quot; name=&quot;数据库与升级&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;数据库与升级&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;keystone-manage db_sync &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 升级/初始化表结构（幂等）&lt;/span&gt;&lt;br/&gt;keystone-manage token_flush &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 手工清理过期 token（fernet 一般不需要）&lt;/span&gt;&lt;br/&gt;mysql -e &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;SELECT COUNT(*) FROM keystone.token;&amp;quot;&lt;/span&gt; 2&amp;gt;/dev/null &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 查 token 表（若启用 SQL 后端）&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;keystone 故障定位顺序&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:5000/v3&lt;/code&gt; 是否 200 → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/log/httpd/keystone_error.log&lt;/code&gt; 首个 Traceback → 能否 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;token issue&lt;/code&gt; → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack service list&lt;/code&gt; 是否为空（=数据库/初始化问题）。&lt;/p&gt;&lt;h3 id=&quot;32-glance镜像服务&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#32-glance%E9%95%9C%E5%83%8F%E6%9C%8D%E5%8A%A1&quot; name=&quot;32-glance镜像服务&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;3.2 glance（镜像服务）&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;形态&lt;/span&gt;：systemd 独立进程 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;glance-api&lt;/code&gt;，监听 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:9292&lt;/code&gt;，镜像文件落 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/glance/images/&lt;/code&gt;。&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl status glance-api --no-pager -l&lt;br/&gt;systemctl restart glance-api&lt;br/&gt;journalctl -u glance-api -n 100 --no-pager&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -f /data/openstack/glance/glance-api.log&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;健康检查与镜像清单&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5%E4%B8%8E%E9%95%9C%E5%83%8F%E6%B8%85%E5%8D%95&quot; name=&quot;健康检查与镜像清单&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;健康检查与镜像清单&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;curl -s -o /dev/null -w &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%{http_code}\n&amp;#39;&lt;/span&gt; http://controller:9292 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 401/200 均可&lt;/span&gt;&lt;br/&gt;openstack image list&lt;br/&gt;openstack image list --status queued -f value -c ID -c Name &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 卡在 queued 的&lt;/span&gt;&lt;br/&gt;openstack image show cirros -f yaml&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;ls&lt;/span&gt; -lh /data/openstack/glance/images/&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;du&lt;/span&gt; -sh /data/openstack/glance/images/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 容量监控&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;上传-导出-修改&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E4%B8%8A%E4%BC%A0-%E5%AF%BC%E5%87%BA-%E4%BF%AE%E6%94%B9&quot; name=&quot;上传-导出-修改&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;上传 / 导出 / 修改&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 上传（qcow2 最常见）&lt;/span&gt;&lt;br/&gt;openstack image create --disk-format qcow2 --container-format bare --public \&lt;br/&gt; &amp;nbsp;--file ./openeuler.qcow2 openeuler-24.03&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 上传大镜像时优先用 --progress，避免以为卡死&lt;/span&gt;&lt;br/&gt;openstack image create --disk-format qcow2 --container-format bare --public \&lt;br/&gt; &amp;nbsp;--progress --file ./big.qcow2 bigimage&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 属性与可见性&lt;/span&gt;&lt;br/&gt;openstack image &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; &amp;lt;image&amp;gt; --property hw_disk_bus=virtio&lt;br/&gt;openstack image &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; &amp;lt;image&amp;gt; --min-disk 10 --min-ram 1024&lt;br/&gt;openstack image &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; &amp;lt;image&amp;gt; --private / --shared / --community&lt;br/&gt;openstack image &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; &amp;lt;image&amp;gt; --name 新名字&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 导出（下载到本地文件）&lt;/span&gt;&lt;br/&gt;openstack image save --file ./backup.qcow2 &amp;lt;image&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 删除&lt;/span&gt;&lt;br/&gt;openstack image delete &amp;lt;image&amp;gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;换镜像文件后同步元数据本仓库特有流程&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E6%8D%A2%E9%95%9C%E5%83%8F%E6%96%87%E4%BB%B6%E5%90%8E%E5%90%8C%E6%AD%A5%E5%85%83%E6%95%B0%E6%8D%AE%E6%9C%AC%E4%BB%93%E5%BA%93%E7%89%B9%E6%9C%89%E6%B5%81%E7%A8%8B&quot; name=&quot;换镜像文件后同步元数据本仓库特有流程&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;换镜像文件后同步元数据（本仓库特有流程）&lt;/h4&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;镜像做过 shrink 优化后，&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;替换文件必须同步数据库&lt;/span&gt;，否则下载得到损坏文件或 404：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 1) 计算新文件的三个值&lt;/span&gt;&lt;br/&gt;NEW_SIZE=$(&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;stat&lt;/span&gt; -c %s /data/openstack/glance/images/&amp;lt;file&amp;gt;)&lt;br/&gt;NEW_MD5=$(&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;md5sum&lt;/span&gt; /data/openstack/glance/images/&amp;lt;file&amp;gt; | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;cut&lt;/span&gt; -d&lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39; &amp;#39;&lt;/span&gt; -f1)&lt;br/&gt;NEW_SHA=$(&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;sha256sum&lt;/span&gt; /data/openstack/glance/images/&amp;lt;file&amp;gt; | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;cut&lt;/span&gt; -d&lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39; &amp;#39;&lt;/span&gt; -f1)&lt;br/&gt;NEW_VSIZE=$(qemu-img info --output=json /data/openstack/glance/images/&amp;lt;file&amp;gt; | \&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;python3 -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;import sys,json;print(json.load(sys.stdin)[&amp;quot;virtual-size&amp;quot;])&amp;#39;&lt;/span&gt;)&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 2) 写回 glance 库（无 openstackclient 时的直改法）&lt;/span&gt;&lt;br/&gt;mysql glance -e &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;UPDATE images SET size=&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$NEW_SIZE&lt;/span&gt;, virtual_size=&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$NEW_VSIZE&lt;/span&gt;,&lt;br/&gt; &amp;nbsp;checksum=&amp;#39;&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$NEW_MD5&lt;/span&gt;&amp;#39;, os_hash_algo=&amp;#39;sha512&amp;#39;, os_hash_value=&amp;#39;&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$NEW_SHA&lt;/span&gt;&amp;#39;&lt;br/&gt; &amp;nbsp;WHERE id=&amp;#39;&amp;lt;image-id&amp;gt;&amp;#39;;&amp;quot;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 3) 重载服务并校验&lt;/span&gt;&lt;br/&gt;systemctl restart glance-api&lt;br/&gt;openstack image show &amp;lt;image&amp;gt; -f value -c size -c checksum -c virtual_size&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;checksum&lt;/code&gt; 字段是 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;md5（varchar32）&lt;/span&gt;，&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;os_hash_value&lt;/code&gt; 是 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;sha256/sha512&lt;/span&gt;，两者不能混。 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack image save&lt;/code&gt; 后务必比对本地 md5 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack image show -c checksum&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;h4 id=&quot;glance-常见专属问题&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#glance-%E5%B8%B8%E8%A7%81%E4%B8%93%E5%B1%9E%E9%97%AE%E9%A2%98&quot; name=&quot;glance-常见专属问题&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;glance 常见专属问题&lt;/h4&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;检查&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;上传中断变 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;queued&lt;/code&gt;/&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;saving&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack image delete&lt;/code&gt; 后重传；查磁盘空间 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;df -h /data&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;下载 404 但 DB 有记录&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;文件不在 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/glance/images/&lt;/code&gt;，或 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;filesystem_store_datadir&lt;/code&gt; 配错&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;下载后镜像校验失败&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;元数据（size/checksum）与实体文件不一致 → 按上面流程同步&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;401 无法认证&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/glance/glance-api.conf&lt;/code&gt; 的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;auth_url&lt;/code&gt; &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;必须带 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/v3&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id=&quot;33-placement放置服务&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#33-placement%E6%94%BE%E7%BD%AE%E6%9C%8D%E5%8A%A1&quot; name=&quot;33-placement放置服务&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;3.3 placement（放置服务）&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;形态&lt;/span&gt;：httpd + mod_wsgi，入口 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/placement/wsgi.py&lt;/code&gt;，监听 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:8778&lt;/code&gt;。 配置段名必须是 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[placement_database]&lt;/code&gt;（&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;不是&lt;/span&gt; &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[database]&lt;/code&gt;），这是初次部署最常见的启动失败原因。&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl reload httpd&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -100 /var/log/httpd/placement_error.log&lt;br/&gt;placement-manage db &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;sync&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 建表/升级&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;健康检查必须带-token&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5%E5%BF%85%E9%A1%BB%E5%B8%A6-token&quot; name=&quot;健康检查必须带-token&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;健康检查（必须带 token）&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;TOKEN=$(openstack token issue -f value -c &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;id&lt;/span&gt;)&lt;br/&gt;curl -s -o /dev/null -w &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%{http_code}\n&amp;#39;&lt;/span&gt; -H &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;X-Auth-Token: &lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$TOKEN&lt;/span&gt;&amp;quot;&lt;/span&gt; http://controller:8778/ &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 200&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;资源账本查询判断为什么调度失败的第一现场&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E8%B5%84%E6%BA%90%E8%B4%A6%E6%9C%AC%E6%9F%A5%E8%AF%A2%E5%88%A4%E6%96%AD%E4%B8%BA%E4%BB%80%E4%B9%88%E8%B0%83%E5%BA%A6%E5%A4%B1%E8%B4%A5%E7%9A%84%E7%AC%AC%E4%B8%80%E7%8E%B0%E5%9C%BA&quot; name=&quot;资源账本查询判断为什么调度失败的第一现场&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;资源账本查询（判断&amp;quot;为什么调度失败&amp;quot;的第一现场）&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 资源提供者清单&lt;/span&gt;&lt;br/&gt;openstack resource provider list&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 某节点总容量 / 已用 / 剩余&lt;/span&gt;&lt;br/&gt;openstack resource provider inventory list &amp;lt;rp-uuid&amp;gt;&lt;br/&gt;openstack resource provider usage show &amp;lt;rp-uuid&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 分配明细（谁占用了这些资源）&lt;/span&gt;&lt;br/&gt;openstack resource provider allocation show &amp;lt;rp-uuid&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 查看某台计算节点的资源类&lt;/span&gt;&lt;br/&gt;openstack resource class list&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;典型判断：&lt;/p&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;usage&lt;/code&gt; 现象&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;VCPU: 0&lt;/code&gt; 却报 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;No valid host&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;不是资源不足，查 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-scheduler.log&lt;/code&gt; 的过滤原因（聚合/可用域/PCI）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;MEMORY_MB&lt;/code&gt; 接近 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;total&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;真的没内存，删实例或调 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ram_allocation_ratio&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;资源提供者缺失&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-compute&lt;/code&gt; 未成功启动或未上报，查 compute 日志&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4 id=&quot;placement-专属故障&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#placement-%E4%B8%93%E5%B1%9E%E6%95%85%E9%9A%9C&quot; name=&quot;placement-专属故障&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;placement 专属故障&lt;/h4&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修复&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;RequiredOptError: value required for option connection in group [placement_database]&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;段名写成 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[database]&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;改 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/placement/placement.conf&lt;/code&gt; 为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[placement_database]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;API 500 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;NoSuchOptError: no such option enforce_scope&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;新版 oslo.policy 移除该选项&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;改 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;placement/deploy.py&lt;/code&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;if not getattr(conf.oslo_policy, &amp;#39;enforce_scope&amp;#39;, True):&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack server create&lt;/code&gt; 报 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;409 Conflict: Inventory for ...&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;资源提供者库存未生成&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;重启 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-compute&lt;/code&gt; 触发 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;discover_hosts&lt;/code&gt; 上报&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id=&quot;34-nova计算服务&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#34-nova%E8%AE%A1%E7%AE%97%E6%9C%8D%E5%8A%A1&quot; name=&quot;34-nova计算服务&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;3.4 nova（计算服务）&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;形态&lt;/span&gt;：API 走 httpd（&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-api&lt;/code&gt; vhost，&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:8774&lt;/code&gt; 计算 API、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:8775&lt;/code&gt; metadata）； 调度/数据库代理/计算/控制台代理是 4 个独立 systemd 单元。&lt;/p&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;单元&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;端口&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;作用&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;挂了的现象&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;httpd&lt;/code&gt;（nova vhost）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;8774 / 8775&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;接收 API、注入 metadata&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;CLI 全部报连不上&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-scheduler&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;—&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;选主机&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;实例长期 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;BUILD&lt;/code&gt; 后 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ERROR&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-conductor&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;—&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;代理 DB 访问&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;实例状态不更新、调度超时&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-compute&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;—&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;调 libvirt 起虚机&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;主机 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;down&lt;/code&gt;、无新实例&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-novncproxy&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;6080&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;Web 控制台&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;「控制台」打不开&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl status nova-{compute,conductor,scheduler,novncproxy} --no-pager -l&lt;br/&gt;systemctl restart nova-compute &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 改 nova.conf 后四个都要重启&lt;/span&gt;&lt;br/&gt;journalctl -u nova-compute -n 100 --no-pager&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;健康检查-1&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5-1&quot; name=&quot;健康检查-1&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;健康检查&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;openstack compute service list &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 三行都要 up；State 列的 enabled 也要对&lt;/span&gt;&lt;br/&gt;openstack hypervisor list &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# open88 / QEMU / up&lt;/span&gt;&lt;br/&gt;openstack hypervisor show open88 -f yaml&lt;br/&gt;nova-manage cell_v2 list_cells &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# cell0 + cell1&lt;/span&gt;&lt;br/&gt;nova-manage cell_v2 discover_hosts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 新计算节点注册（幂等）&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;实例生命周期&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%AE%9E%E4%BE%8B%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F&quot; name=&quot;实例生命周期&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;实例生命周期&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;openstack server list --all-projects --long&lt;br/&gt;openstack server show &amp;lt;实例&amp;gt; -f yaml &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# status / task_state / host / fault&lt;/span&gt;&lt;br/&gt;openstack server start|stop|reboot|reboot --hard &amp;lt;实例&amp;gt;&lt;br/&gt;openstack server delete &amp;lt;实例&amp;gt;&lt;br/&gt;openstack server resize --flavor &amp;lt;新规格&amp;gt; &amp;lt;实例&amp;gt; &amp;amp;&amp;amp; openstack server resize confirm &amp;lt;实例&amp;gt;&lt;br/&gt;openstack server rebuild &amp;lt;实例&amp;gt; --image &amp;lt;镜像&amp;gt; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 重建（会丢失系统盘改动）&lt;/span&gt;&lt;br/&gt;openstack server create --flavor m1.small --image cirros --nic net-id=&amp;lt;net&amp;gt; \&lt;br/&gt; &amp;nbsp;--security-group default --key-name &amp;lt;key&amp;gt; demo-vm&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;看 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;fault&lt;/code&gt; 字段是排障捷径&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack server show &amp;lt;实例&amp;gt; -f value -c fault&lt;/code&gt; 会给出 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;message&lt;/code&gt; 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;code&lt;/code&gt;，通常直接指向根因（镜像、网络、配额、privsep）。&lt;/p&gt;&lt;h4 id=&quot;虚拟化层绕过-nova-看真相&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E8%99%9A%E6%8B%9F%E5%8C%96%E5%B1%82%E7%BB%95%E8%BF%87-nova-%E7%9C%8B%E7%9C%9F%E7%9B%B8&quot; name=&quot;虚拟化层绕过-nova-看真相&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;虚拟化层（绕过 nova 看真相）&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;virsh list --all &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 域在不在、什么状态&lt;/span&gt;&lt;br/&gt;virsh domstate instance-00000004 &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# running / shut off / paused&lt;/span&gt;&lt;br/&gt;virsh dumpxml instance-00000004 | grep -E &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;source file|mac address|target dev&amp;#39;&lt;/span&gt;&lt;br/&gt;virsh domiflist instance-00000004 &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 网卡与所属网桥（应为 br-int 的 tap）&lt;/span&gt;&lt;br/&gt;virsh console instance-00000004 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 看引导卡在哪（Ctrl+] 退出）&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -50 /var/log/libvirt/qemu/instance-00000004.&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;log&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;数据库与-cell-运维&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8E-cell-%E8%BF%90%E7%BB%B4&quot; name=&quot;数据库与-cell-运维&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;数据库与 cell 运维&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;nova-manage api_db &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;sync&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# nova_api 库&lt;/span&gt;&lt;br/&gt;nova-manage db &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;sync&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# cell 库&lt;/span&gt;&lt;br/&gt;nova-manage cell_v2 list_cells&lt;br/&gt;nova-manage cell_v2 map_cell0&lt;br/&gt;nova-manage cell_v2 create_cell --name cell1 --verbose&lt;br/&gt;nova-manage db archive_deleted_rows --max_rows 1000 &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 清理已删记录&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;nova-专属故障速查&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#nova-%E4%B8%93%E5%B1%9E%E6%95%85%E9%9A%9C%E9%80%9F%E6%9F%A5&quot; name=&quot;nova-专属故障速查&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;nova 专属故障速查&lt;/h4&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;处置&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Compute driver option required, but not specified&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova.conf&lt;/code&gt; 缺 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;compute_driver&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[DEFAULT] compute_driver = libvirt.LibvirtDriver&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ModuleNotFoundError: No module named &amp;#39;libvirt&amp;#39;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;venv 缺绑定（pip 编译失败）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;dnf install -y libvirt-devel python3-libvirt&lt;/code&gt;，再软链 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;libvirt.py&lt;/code&gt; 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;libvirtmod*.so&lt;/code&gt; 进 venv&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;实例创建 500 / 调度失败&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;缺 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/nova/rootwrap.conf&lt;/code&gt; 或 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;rootwrap.d/&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;从源码 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;etc/nova/&lt;/code&gt; 复制补齐&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;FailedToDropPrivileges ... exited non-zero (97)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;缺 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;vif_plug_ovs&lt;/code&gt; 的 privsep 过滤器&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;新增 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;privsep-extra.filters&lt;/code&gt;（&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;必须含 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[Filters]&lt;/code&gt; 段头&lt;/span&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;FailedToDropPrivileges ... (1)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;privsep-helper&lt;/code&gt; 不在 sudo &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;secure_path&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ln -sf /data/openstack/venv/bin/privsep-helper /usr/local/bin/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Failed to allocate the network(s), not rescheduling&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;neutron 未通知 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;network-vif-plugged&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron.conf&lt;/code&gt; 开启 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;notify_nova_on_port_status_changes/_data_changes&lt;/code&gt; 并配 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[nova]&lt;/code&gt; 段&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id=&quot;35-neutron网络服务&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#35-neutron%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1&quot; name=&quot;35-neutron网络服务&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;3.5 neutron（网络服务）&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;形态&lt;/span&gt;：API 由 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-server&lt;/code&gt;（systemd，&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;:9696&lt;/code&gt;）提供；数据面靠 4 个 agent 进程。 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;2025.2 新增 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-rpc-server&lt;/code&gt;，缺它 agent 会 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;active&lt;/code&gt; 但永不注册。&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl status neutron-{rpc-server,openvswitch-agent,dhcp-agent,l3-agent,metadata-agent} \&lt;br/&gt; &amp;nbsp;--no-pager -l&lt;br/&gt;systemctl restart neutron-rpc-server &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 改了 agent 配置后建议整体重启&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;for&lt;/span&gt; u &lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;in&lt;/span&gt; rpc-server openvswitch-agent dhcp-agent l3-agent metadata-agent; &lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;do&lt;/span&gt;&lt;br/&gt; &amp;nbsp;systemctl restart neutron-&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$u&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;done&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;健康检查四件套必须齐全&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5%E5%9B%9B%E4%BB%B6%E5%A5%97%E5%BF%85%E9%A1%BB%E9%BD%90%E5%85%A8&quot; name=&quot;健康检查四件套必须齐全&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;健康检查（四件套必须齐全）&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;openstack network agent list&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 期望：Open vSwitch agent / DHCP agent / L3 agent / Metadata agent，State=UP，Alive=True&lt;/span&gt;&lt;br/&gt;openstack network agent list -f value -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;Agent Type&amp;#39;&lt;/span&gt; -c Alive -c State&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;少任何一个 agent、或 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Alive=False&lt;/code&gt;，都说明对应进程没连上 RPC。先查 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-rpc-server&lt;/code&gt;， 再查该 agent 的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;.log&lt;/code&gt; 是否有 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;AMQP&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Unauthorized&lt;/code&gt;。&lt;/p&gt;&lt;h4 id=&quot;网络对象运维&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E7%BD%91%E7%BB%9C%E5%AF%B9%E8%B1%A1%E8%BF%90%E7%BB%B4&quot; name=&quot;网络对象运维&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;网络对象运维&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;openstack network list&lt;br/&gt;openstack network show &amp;lt;net&amp;gt; -f yaml&lt;br/&gt;openstack network create --provider-network-type flat --provider-physical-network provider \&lt;br/&gt; &amp;nbsp;--external public &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 创建外部网络&lt;/span&gt;&lt;br/&gt;openstack subnet create --network public --subnet-range 192.168.3.0/24 \&lt;br/&gt; &amp;nbsp;--gateway 192.168.3.1 --allocation-pool start=192.168.3.200,end=192.168.3.250 \&lt;br/&gt; &amp;nbsp;--no-dhcp public-subnet&lt;br/&gt;openstack network &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; --external public&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 租户网络与路由&lt;/span&gt;&lt;br/&gt;openstack network create demo-net&lt;br/&gt;openstack subnet create --network demo-net --subnet-range 10.0.0.0/24 demo-subnet&lt;br/&gt;openstack router create demo-router&lt;br/&gt;openstack router add subnet demo-router demo-subnet&lt;br/&gt;openstack router &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; --external-gateway public demo-router&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 端口（排查绑定问题的主力）&lt;/span&gt;&lt;br/&gt;openstack port list&lt;br/&gt;openstack port show &amp;lt;port&amp;gt; -f yaml &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 重点看 binding:vif_type / binding:host_id&lt;/span&gt;&lt;br/&gt;openstack port &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; --security-group &amp;lt;sg&amp;gt; &amp;lt;port&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 安全组（项目多时务必用 ID，不能用名字）&lt;/span&gt;&lt;br/&gt;SG=$(openstack security group list --project admin -f value -c ID -c Name | awk &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;/default/{print $1}&amp;#39;&lt;/span&gt;)&lt;br/&gt;openstack security group rule create --ingress --proto tcp --dst-port 22 &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$SG&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br/&gt;openstack security group rule list &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$SG&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 浮动 IP&lt;/span&gt;&lt;br/&gt;openstack floating ip create public&lt;br/&gt;openstack floating ip list&lt;br/&gt;openstack server add floating ip &amp;lt;实例&amp;gt; &amp;lt;浮动IP&amp;gt;&lt;br/&gt;openstack floating ip delete &amp;lt;浮动IP&amp;gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;命名空间数据面真相所在&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E6%95%B0%E6%8D%AE%E9%9D%A2%E7%9C%9F%E7%9B%B8%E6%89%80%E5%9C%A8&quot; name=&quot;命名空间数据面真相所在&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;命名空间（数据面真相所在）&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;ip netns list &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# qrouter-&amp;lt;id&amp;gt; / qdhcp-&amp;lt;id&amp;gt;&lt;/span&gt;&lt;br/&gt;ip netns &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;exec&lt;/span&gt; qrouter-&amp;lt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;id&lt;/span&gt;&amp;gt; ip -4 addr show &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 看 qg（外部）/ qr（内部）地址&lt;/span&gt;&lt;br/&gt;ip netns &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;exec&lt;/span&gt; qrouter-&amp;lt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;id&lt;/span&gt;&amp;gt; ip route show&lt;br/&gt;ip netns &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;exec&lt;/span&gt; qrouter-&amp;lt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;id&lt;/span&gt;&amp;gt; ping -c2 192.168.3.1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# SNAT 出网关&lt;/span&gt;&lt;br/&gt;ip netns &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;exec&lt;/span&gt; qrouter-&amp;lt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;id&lt;/span&gt;&amp;gt; bash -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;exec 3&amp;lt;&amp;gt;/dev/tcp/223.5.5.5/53&amp;#39;&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;echo&lt;/span&gt; TCP-OK&lt;br/&gt;ip netns &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;exec&lt;/span&gt; qrouter-&amp;lt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;id&lt;/span&gt;&amp;gt; ping -c2 &amp;lt;实例私有IP&amp;gt;&lt;br/&gt;ip netns &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;exec&lt;/span&gt; qdhcp-&amp;lt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;id&lt;/span&gt;&amp;gt; ip -4 addr show&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# OVS 侧&lt;/span&gt;&lt;br/&gt;ovs-vsctl show&lt;br/&gt;ovs-vsctl list-ports br-provider &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# phy-br-provider + veth-brex&lt;/span&gt;&lt;br/&gt;ovs-vsctl list-ports br-int | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;head&lt;/span&gt; -30 &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# tap / qvo / patch&lt;/span&gt;&lt;br/&gt;ovs-ofctl dump-flows br-int | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;head&lt;/span&gt; -40&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;neutron-专属故障速查&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#neutron-%E4%B8%93%E5%B1%9E%E6%95%85%E9%9A%9C%E9%80%9F%E6%9F%A5&quot; name=&quot;neutron-专属故障速查&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;neutron 专属故障速查&lt;/h4&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;处置&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;API 500 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;AttributeError: neutron_lib.constants has no attribute ...&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;neutron-lib 过新&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;pip install &amp;#39;neutron-lib==3.21.1&amp;#39;&lt;/code&gt; 后重启&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;agent &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;active&lt;/code&gt; 但不注册&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;缺 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-rpc-server&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl enable --now neutron-rpc-server&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;OVS agent &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Bridge br-provider ... does not exist&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;网桥没建&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ovs-vsctl --may-exist add-br br-provider&lt;/code&gt;（&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;不接物理网卡&lt;/span&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;OVS agent &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;FailedToDropPrivileges&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;缺 rootwrap 配置/软链&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;补 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/neutron/rootwrap.conf&lt;/code&gt; + &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;rootwrap.d/*.filters&lt;/code&gt; + &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-rootwrap&lt;/code&gt; 软链&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;nova→neutron 调用 401&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;服务令牌缺 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;service&lt;/code&gt; 角色&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack role create service&lt;/code&gt; 并授给各服务用户&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;实例 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Failed to allocate the network(s)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;未通知 vif-plugged&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;见 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#34-nova%E8%AE%A1%E7%AE%97%E6%9C%8D%E5%8A%A1&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;3.4&lt;/a&gt; 对应条目&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id=&quot;36-horizon仪表板&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#36-horizon%E4%BB%AA%E8%A1%A8%E6%9D%BF&quot; name=&quot;36-horizon仪表板&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;3.6 horizon（仪表板）&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;形态&lt;/span&gt;：httpd + mod_wsgi，&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;WSGIScriptAlias /dashboard /data/openstack/horizon/wsgi/django.wsgi&lt;/code&gt;，访问 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;http://192.168.3.88/dashboard/&lt;/code&gt;。&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl reload httpd&lt;br/&gt;apachectl -t&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -100 /data/openstack/horizon/error.log&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -100 /var/log/httpd/horizon_error.log&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;健康检查-2&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5-2&quot; name=&quot;健康检查-2&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;健康检查&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;curl -s -o /dev/null -w &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%{http_code}\n&amp;#39;&lt;/span&gt; http://192.168.3.88/dashboard/ &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 200&lt;/span&gt;&lt;br/&gt;curl -s -o /dev/null -w &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%{http_code}\n&amp;#39;&lt;/span&gt; http://192.168.3.88/dashboard/auth/login/&lt;br/&gt;curl -s -o /dev/null -w &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%{http_code}\n&amp;#39;&lt;/span&gt; http://192.168.3.88/dashboard/static/dashboard/css/output.css&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;改配置-静态资源-会话&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E6%94%B9%E9%85%8D%E7%BD%AE-%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90-%E4%BC%9A%E8%AF%9D&quot; name=&quot;改配置-静态资源-会话&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;改配置 / 静态资源 / 会话&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;SP=/data/openstack/venv/lib/python3.11/site-packages&lt;br/&gt;vi &lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$SP&lt;/span&gt;/openstack_dashboard/local/local_settings.py &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# OPENSTACK_HOST / CACHES / WEBROOT&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 静态资源变更后必须重收集&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$SP&lt;/span&gt;/openstack_dashboard &amp;amp;&amp;amp; /data/openstack/venv/bin/python3 manage.py collectstatic --noinput&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;chown&lt;/span&gt; -R apache:apache /data/openstack/horizon/static&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 会话异常（登录后立刻掉、按钮显示不全）先清缓存会话&lt;/span&gt;&lt;br/&gt;systemctl restart memcached&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;flush_all&amp;#39;&lt;/span&gt; | nc -q1 127.0.0.1 11211 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 或直接刷缓存&lt;/span&gt;&lt;br/&gt;systemctl restart httpd&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;local_settings.py&lt;/code&gt; 中与本机强相关的四项（写错即页面 500）：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-python&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;OPENSTACK_KEYSTONE_URL = &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;http://controller:5000/v3&amp;quot;&lt;/span&gt; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 必须带 /v3&lt;/span&gt;&lt;br/&gt;CACHES = {&lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;default&amp;#39;&lt;/span&gt;: {&lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;BACKEND&amp;#39;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;django.core.cache.backends.memcached.PyMemcacheCache&amp;#39;&lt;/span&gt;,&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;LOCATION&amp;#39;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;controller:11211&amp;#39;&lt;/span&gt;}}&lt;br/&gt;SESSION_SERIALIZER = &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;django.contrib.sessions.serializers.JSONSerializer&amp;#39;&lt;/span&gt; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 新版 Django 无 Pickle&lt;/span&gt;&lt;br/&gt;STATIC_ROOT = &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;/data/openstack/horizon/static&amp;#39;&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;horizon-专属故障速查&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#horizon-%E4%B8%93%E5%B1%9E%E6%95%85%E9%9A%9C%E9%80%9F%E6%9F%A5&quot; name=&quot;horizon-专属故障速查&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;horizon 专属故障速查&lt;/h4&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;处置&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;登录 500 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ModuleNotFoundError: pymemcache&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;缓存后端依赖缺失&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;pip install pymemcache&lt;/code&gt; 后 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl restart httpd&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;collectstatic&lt;/code&gt; 找不到 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;manage.py&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;pip 包不含该文件&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cp /data/src/horizon-*/manage.py $SP/openstack_dashboard/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;sass.CompileError: font-awesome.scss not found&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;XStatic-Font-Awesome 新版目录变化&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;pip install &amp;#39;XStatic-Font-Awesome==4.7.0.0&amp;#39;&lt;/code&gt; 再 collectstatic&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;实例的删除/启动/停止按钮消失&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;policy 作用域误判（详见 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#47-horizon%E5%B8%A6%E7%AD%96%E7%95%A5%E6%A0%A1%E9%AA%8C%E7%9A%84%E6%8C%89%E9%92%AE%E5%85%A8%E9%83%A8%E6%B6%88%E5%A4%B1&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;4.7&lt;/a&gt;）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack_auth/policy.py&lt;/code&gt; 的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;_user_to_credentials()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;登录后立即退出&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;memcached 挂或会话序列化不兼容&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;查 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;memcached&lt;/code&gt; 状态与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;SESSION_SERIALIZER&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id=&quot;37-cinder块存储服务&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#37-cinder%E5%9D%97%E5%AD%98%E5%82%A8%E6%9C%8D%E5%8A%A1&quot; name=&quot;37-cinder块存储服务&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;3.7 cinder（块存储服务）&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;形态&lt;/span&gt;：3 个 systemd 单元，其中 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volumes-loop&lt;/code&gt; 是&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;前置条件&lt;/span&gt;（建 loop 设备 + LVM 卷组）， 它失败则 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volume&lt;/code&gt; 必然 down。&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl status cinder-{volumes-loop,scheduler,volume} --no-pager -l&lt;br/&gt;systemctl restart cinder-volumes-loop &amp;amp;&amp;amp; systemctl restart cinder-volume&lt;br/&gt;journalctl -u cinder-volume -n 100 --no-pager&lt;br/&gt;systemctl-analyze verify /usr/lib/systemd/system/cinder-volumes-loop.service 2&amp;gt;/dev/null || \&lt;br/&gt; &amp;nbsp;systemd-analyze verify /usr/lib/systemd/system/cinder-volumes-loop.service&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;健康检查-3&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5-3&quot; name=&quot;健康检查-3&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;健康检查&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;openstack volume service list &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# cinder-scheduler / cinder-volume 都要 up&lt;/span&gt;&lt;br/&gt;openstack volume list --all-projects&lt;br/&gt;vgs &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# cinder-volumes 卷组存在且有剩余空间&lt;/span&gt;&lt;br/&gt;lvs --noheadings -o lv_name,size,vg_name | grep cinder-volumes&lt;br/&gt;losetup -j /data/openstack/cinder/volumes.img&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;df&lt;/span&gt; -h /data&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;卷生命周期&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%8D%B7%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F&quot; name=&quot;卷生命周期&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;卷生命周期&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;openstack volume create --size 10 --description &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;test&amp;#39;&lt;/span&gt; vol1&lt;br/&gt;openstack volume show vol1 -f yaml &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# status 应 available&lt;/span&gt;&lt;br/&gt;openstack volume &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;set&lt;/span&gt; vol1 --name vol1-renamed&lt;br/&gt;openstack server add volume &amp;lt;实例&amp;gt; vol1 --device /dev/vdb&lt;br/&gt;openstack server remove volume &amp;lt;实例&amp;gt; vol1&lt;br/&gt;openstack volume snapshot create --volume vol1 snap1&lt;br/&gt;openstack volume create --snapshot snap1 --size 10 vol2&lt;br/&gt;openstack volume delete vol1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 挂载中会拒绝&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;后端与卷组维护&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%90%8E%E7%AB%AF%E4%B8%8E%E5%8D%B7%E7%BB%84%E7%BB%B4%E6%8A%A4&quot; name=&quot;后端与卷组维护&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;后端与卷组维护&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 卷组容量（loop 文件占满会导致创建卷失败）&lt;/span&gt;&lt;br/&gt;vgs cinder-volumes&lt;br/&gt;pvs&lt;br/&gt;lvs -a&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 扩容 loop 卷组（宿主磁盘允许时）&lt;/span&gt;&lt;br/&gt;systemctl stop cinder-volume&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;truncate&lt;/span&gt; -s +50G /data/openstack/cinder/volumes.img&lt;br/&gt;LOOP=$(losetup -j /data/openstack/cinder/volumes.img | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;cut&lt;/span&gt; -d: -f1)&lt;br/&gt;losetup -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$LOOP&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br/&gt;pvresize &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$LOOP&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br/&gt;vgextend cinder-volumes &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$LOOP&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br/&gt;systemctl start cinder-volumes-loop cinder-volume&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 服务列表里出现 down 后的恢复顺序&lt;/span&gt;&lt;br/&gt;systemctl start cinder-volumes-loop&lt;br/&gt;systemctl restart cinder-volume&lt;br/&gt;openstack volume service list&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;cinder-专属故障速查&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#cinder-%E4%B8%93%E5%B1%9E%E6%95%85%E9%9A%9C%E9%80%9F%E6%9F%A5&quot; name=&quot;cinder-专属故障速查&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;cinder 专属故障速查&lt;/h4&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;处置&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volume&lt;/code&gt; 反复退出 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;FileNotFoundError: cinder-rtstool&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;单元 PATH 不含 venv&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;单元加 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Environment=PATH=/data/openstack/venv/bin:...&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;卷创建失败 / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volume down&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;卷组不存在（loop 单元未成功）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;建 loop + &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;vgcreate cinder-volumes&lt;/code&gt;，或修 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volumes-loop&lt;/code&gt; 单元&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Manager for service ... not sending heartbeat&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;后端初始化失败（多数是卷组缺）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;先 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;vgs&lt;/code&gt;，再查 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volume.log&lt;/code&gt; 首个 Traceback&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;bad unit file setting&lt;/code&gt;（单元起不来）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;单元文件里有非法字段&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemd-analyze verify &amp;lt;unit&amp;gt;&lt;/code&gt; 定位后修正&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr style=&quot;white-space: normal; border-width: 1px 0px 0px; border-style: solid none none; border-color: rgb(227, 227, 238) currentcolor currentcolor; border-image: none; box-sizing: content-box; margin: 16px 0px; padding: 0px; color: inherit; height: 0px; overflow: visible; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;h2 id=&quot;4-故障解决方法&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#4-%E6%95%85%E9%9A%9C%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95&quot; name=&quot;4-故障解决方法&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4. 故障解决方法&lt;/h2&gt;&lt;h3 id=&quot;41-分层诊断法&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#41-%E5%88%86%E5%B1%82%E8%AF%8A%E6%96%AD%E6%B3%95&quot; name=&quot;41-分层诊断法&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.1 分层诊断法&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;OpenStack 的故障几乎都以「上层报错、根因在下层」的形式出现。&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;固定按下面 7 层自底向上走&lt;/span&gt;， 每层都有明确判据，不通就停在该层，不要跳到上层猜：&lt;/p&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;层&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;判据命令&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;不通的典型含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;① 磁盘/内存&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;df -h /data&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;free -g&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data&lt;/code&gt; 满 → 镜像/卷/日志全挂，报错五花八门&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;② 数据库&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;mysqladmin ping&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;mysql -e &amp;#39;show databases;&amp;#39;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;所有服务 500，日志 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Can&amp;#39;t connect to MySQL&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;③ 消息队列&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;rabbitmqctl status&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;rabbitmqctl list_queues&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;服务 active 但状态永不更新、agent 不注册&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;④ 缓存&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nc -z 127.0.0.1 11211&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;keystone token 慢、horizon 掉登录&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;⑤ 认证&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack token issue&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack service list&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;401/403、service catalog 为空&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;⑥ API&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;curl -o /dev/null -w &amp;#39;%{http_code}&amp;#39; http://controller:&amp;lt;port&amp;gt;/&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;500/502 看 httpd 或对应服务日志&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;⑦ agent/后端&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack compute service list&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;network agent list&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;volume service list&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;进程在但资源不可用&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;一次跑完前 5 层（建议存成别名）：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;df&lt;/span&gt; -h /data | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -1&lt;br/&gt;mysqladmin ping 2&amp;gt;&amp;amp;1 | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -1&lt;br/&gt;rabbitmqctl status 2&amp;gt;&amp;amp;1 | grep -E &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;Runtime|Uptime&amp;#39;&lt;/span&gt; | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;head&lt;/span&gt; -2&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;timeout&lt;/span&gt; 2 nc -z 127.0.0.1 11211 &amp;amp;&amp;amp; &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;echo&lt;/span&gt; memcached-OK&lt;br/&gt;openstack token issue -f value -c expires &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;amp; &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;echo&lt;/span&gt; keystone-OK&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;常见误判&lt;/span&gt;：&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;看到 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ERROR&lt;/code&gt; 就重启 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-compute&lt;/code&gt;——多数时候它只是&amp;quot;受害者&amp;quot;，真因在 neutron 未发 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;vif-plugged&lt;/code&gt; 或 glance 镜像取不到。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;看到 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;active (running)&lt;/code&gt; 就认为服务正常——本版本 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron&lt;/code&gt; agent 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volume&lt;/code&gt; 都可能&amp;quot;活着但不干活&amp;quot;，必须看第 ⑦ 层。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;只看 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/log/messages&lt;/code&gt; 或 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;journalctl&lt;/code&gt;——WSGI 类服务（keystone/placement/nova-api/horizon） 的真正堆栈在 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/log/httpd/*_error.log&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;42-wsgi-httpd-与-venv六类典型故障&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#42-wsgi-httpd-%E4%B8%8E-venv%E5%85%AD%E7%B1%BB%E5%85%B8%E5%9E%8B%E6%95%85%E9%9A%9C&quot; name=&quot;42-wsgi-httpd-与-venv六类典型故障&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.2 WSGI / httpd 与 venv：六类典型故障&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;本环境 4 个服务跑在 httpd 下，它们的故障几乎都落在「&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;Python 找不到包&lt;/span&gt;」和「&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;apache 用户读不到 / 写不了 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data&lt;/code&gt;&lt;/span&gt;」这两件事上。&lt;/p&gt;&lt;h4 id=&quot;modulenotfounderror-no-module-named-keystonewsgi-找不到-venv-包&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#modulenotfounderror-no-module-named-keystonewsgi-%E6%89%BE%E4%B8%8D%E5%88%B0-venv-%E5%8C%85&quot; name=&quot;modulenotfounderror-no-module-named-keystonewsgi-找不到-venv-包&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;① &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ModuleNotFoundError: No module named &amp;#39;keystone&amp;#39;&lt;/code&gt;（WSGI 找不到 venv 包）&lt;/h4&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;根因&lt;/span&gt;：mod_wsgi 用的是系统 Python，不会继承 venv 的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;site-packages&lt;/code&gt;。 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;修复&lt;/span&gt;：每个 WSGI 入口文件第一行就要插路径：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-python&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;import&lt;/span&gt; sys&lt;br/&gt;sys.path.insert(&lt;span class=&quot;hljs-number&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #0086B3;&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;/data/openstack/venv/lib/python3.11/site-packages&amp;quot;&lt;/span&gt;)&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;本机同时存在 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;lib&lt;/code&gt; 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;lib64&lt;/code&gt; 两个 site-packages 目录，缺包时先确认软链是否齐全： &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ls /data/openstack/venv/lib64/python3.11/site-packages | head&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;h4 id=&quot;permissionerror-errno-13-dataopenstack&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#permissionerror-errno-13-dataopenstack&quot; name=&quot;permissionerror-errno-13-dataopenstack&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;② &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;PermissionError: [Errno 13] ... /data/openstack/...&lt;/code&gt;&lt;/h4&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;根因&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;apache&lt;/code&gt; 用户无法进入 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data&lt;/code&gt;（目录缺 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;o+x&lt;/code&gt;）或无权读写日志目录。 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;修复&lt;/span&gt;：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;chmod&lt;/span&gt; o+x /data /data/openstack&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;chown&lt;/span&gt; apache:apache /data/openstack/{nova,neutron,cinder,horizon,glance,placement}/*.&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;log&lt;/span&gt; 2&amp;gt;/dev/null&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 若日志目录属主被改成服务用户（nova/neutron），一并纠正&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;chown&lt;/span&gt; -R apache:apache /var/log/httpd&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;api-500-且日志里-permissionerror-apipylog&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#api-500-%E4%B8%94%E6%97%A5%E5%BF%97%E9%87%8C-permissionerror-apipylog&quot; name=&quot;api-500-且日志里-permissionerror-apipylog&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;③ API 500 且日志里 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;PermissionError ... api.py.log&lt;/code&gt;&lt;/h4&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;根因&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack&lt;/code&gt; 下的日志文件属主是 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova&lt;/code&gt;（systemd 进程建的），apache 不可写。 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;修复&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;chown apache:apache &amp;lt;该日志&amp;gt;&lt;/code&gt; 并删除旧的不可写文件后重启 httpd。&lt;/p&gt;&lt;h4 id=&quot;configfilesnotfounderror-etcnovaapi-pasteini&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#configfilesnotfounderror-etcnovaapi-pasteini&quot; name=&quot;configfilesnotfounderror-etcnovaapi-pasteini&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;④ &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ConfigFilesNotFoundError: /etc/nova/api-paste.ini&lt;/code&gt;&lt;/h4&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;根因&lt;/span&gt;：源码包只提供模板，pip 安装不会自动落地到 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc&lt;/code&gt;。 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;修复&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cp /data/src/nova-32.2.2.dev2/etc/nova/api-paste.ini /etc/nova/&lt;/code&gt;（其它服务同理）。&lt;/p&gt;&lt;h4 id=&quot;oserror-errno-13-permission-denied-etcsvcsvcconf&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#oserror-errno-13-permission-denied-etcsvcsvcconf&quot; name=&quot;oserror-errno-13-permission-denied-etcsvcsvcconf&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;⑤ &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;OSError: [Errno 13] Permission denied: &amp;#39;/etc/&amp;lt;svc&amp;gt;/&amp;lt;svc&amp;gt;.conf&amp;#39;&lt;/code&gt;&lt;/h4&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;根因&lt;/span&gt;：配置文件曾被 chmod 成 600 且属主不是 apache。 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;修复&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;chown root:apache /etc/nova/nova.conf &amp;amp;&amp;amp; chmod 640 /etc/nova/nova.conf&lt;/code&gt;。&lt;/p&gt;&lt;h4 id=&quot;配置文件含中文导致服务起不来&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%90%AB%E4%B8%AD%E6%96%87%E5%AF%BC%E8%87%B4%E6%9C%8D%E5%8A%A1%E8%B5%B7%E4%B8%8D%E6%9D%A5&quot; name=&quot;配置文件含中文导致服务起不来&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;⑥ 配置文件含中文导致服务起不来&lt;/h4&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;根因&lt;/span&gt;：oslo.config 按 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;ASCII&lt;/span&gt; 解码配置文件。httpd 下 locale 为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;C&lt;/code&gt;，一旦 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/nova/nova.conf&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;l3_agent.ini&lt;/code&gt; 等含中文注释，就报 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;UnicodeDecodeError: &amp;#39;ascii&amp;#39; codec can&amp;#39;t decode byte ...&lt;/code&gt;。 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;规则&lt;/span&gt;：&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;所有 oslo 配置文件（nova/neutron/cinder/keystone/placement/glance）的注释一律用英文&lt;/span&gt;， 中文说明只写在文档里。systemd 直起的服务因 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;locale=UTF-8&lt;/code&gt; 可容忍，但 httpd 下的服务会直接崩。&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 快速定位非 ASCII 字符&lt;/span&gt;&lt;br/&gt;grep -nP &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;[^\x00-\x7F]&amp;#39;&lt;/span&gt; /etc/nova/nova.conf /etc/neutron/*.ini /etc/neutron/plugins/ml2/*.ini&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h3 id=&quot;43-基础组件mariadb-rabbitmq-memcached&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#43-%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6mariadb-rabbitmq-memcached&quot; name=&quot;43-基础组件mariadb-rabbitmq-memcached&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.3 基础组件：MariaDB / RabbitMQ / memcached&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;这三者任一异常，表现都是&amp;quot;所有服务一起出问题&amp;quot;，所以它们排最前。&lt;/p&gt;&lt;h4 id=&quot;mariadb&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#mariadb&quot; name=&quot;mariadb&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;MariaDB&lt;/h4&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修复&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;改了 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;datadir&lt;/code&gt; 不生效，仍是 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/lib/mysql&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;openEuler 上 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/my.cnf&lt;/code&gt; 可能&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;不存在&lt;/span&gt;，只往 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/my.cnf.d/&lt;/code&gt; 写不被读&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;创建 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/my.cnf&lt;/code&gt; 作为主配置，写入 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;datadir&lt;/code&gt; 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;socket&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;mysql&lt;/code&gt; 客户端连不上（socket 不匹配）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;客户端默认 socket 是 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/lib/mysql/mysql.sock&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/my.cnf&lt;/code&gt; 增加 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[client] socket=/data/openstack/mysql/mysql.sock&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;mysql -e &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;SELECT @@datadir, @@socket;&amp;quot;&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 校准是否落 /data&lt;/span&gt;&lt;br/&gt;systemctl restart mariadb&lt;br/&gt;journalctl -u mariadb -n 50 --no-pager&lt;br/&gt;mysql -e &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;SHOW PROCESSLIST;&amp;quot;&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 长事务/锁等待&lt;/span&gt;&lt;br/&gt;mysql -e &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;SELECT table_schema, ROUND(SUM(data_length+index_length)/1024/1024) mb&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM information_schema.tables GROUP BY table_schema ORDER BY mb DESC;&amp;quot;&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;rabbitmq&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#rabbitmq&quot; name=&quot;rabbitmq&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;RabbitMQ&lt;/h4&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修复&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;启动失败 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;failed_to_create_feature_flags_file_directory&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data&lt;/code&gt; 下 mnesia/log 目录属主或权限不对&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;chown -R rabbitmq:rabbitmq /data/openstack/rabbitmq &amp;amp;&amp;amp; chmod 750&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;所有服务报 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;AMQPLAIN ... ACCESS_REFUSED (403)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;全新安装没有 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack&lt;/code&gt; 用户&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;建用户 + 授权限 + 给权限&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl status rabbitmq-server&lt;br/&gt;rabbitmqctl status | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;head&lt;/span&gt; -20&lt;br/&gt;rabbitmqctl list_users&lt;br/&gt;rabbitmqctl list_queues name messages consumers | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;head&lt;/span&gt; -20&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 标准修复（用户缺失场景）&lt;/span&gt;&lt;br/&gt;rabbitmqctl add_user openstack RABBIT_PASS&lt;br/&gt;rabbitmqctl set_permissions openstack &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;.*&amp;quot;&lt;/span&gt; &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;.*&amp;quot;&lt;/span&gt; &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;.*&amp;quot;&lt;/span&gt;&lt;br/&gt;rabbitmqctl set_user_tags openstack administrator&lt;br/&gt;systemctl restart rabbitmq-server&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 队列堆积（agent 长期不消费）&lt;/span&gt;&lt;br/&gt;rabbitmqctl list_queues name messages | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;sort&lt;/span&gt; -k2 -n -r | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;head&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;403&lt;/code&gt; 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;530&lt;/code&gt; 的区别：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;403&lt;/code&gt; 是认证通过但无 vhost 权限；&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;530&lt;/code&gt; 多是用户不存在或口令错。 两者都先 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;rabbitmqctl list_users&lt;/code&gt; + &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;list_permissions -p /&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;h4 id=&quot;memcached&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#memcached&quot; name=&quot;memcached&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;memcached&lt;/h4&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修复&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;启动失败 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Maximum connections must be greater than 0&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;变量写成 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;OPTIONS=&amp;quot;-c ...&amp;quot;&lt;/code&gt;，openEuler 用的是 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;MAXCONN&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/sysconfig/memcached&lt;/code&gt; 里改 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;MAXCONN=&amp;quot;1024&amp;quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl status memcached&lt;br/&gt;ss -lntp | grep 11211&lt;br/&gt;nc -z 127.0.0.1 11211 &amp;amp;&amp;amp; &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;echo&lt;/span&gt; OK&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;echo&lt;/span&gt; -e &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;stats\r&amp;#39;&lt;/span&gt; | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;timeout&lt;/span&gt; 2 nc 127.0.0.1 11211 | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;head&lt;/span&gt; -20 &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 看 curr_connections / evictions&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;evictions&lt;/code&gt; 持续增长说明缓存不够，会引发 keystone token 反复重建、horizon 掉登录。&lt;/p&gt;&lt;h3 id=&quot;44-placement-故障&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#44-placement-%E6%95%85%E9%9A%9C&quot; name=&quot;44-placement-故障&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.4 placement 故障&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修复&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;RequiredOptError: value required for option connection in group [placement_database]&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;配置段名写成 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[database]&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;改为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[placement_database]&lt;/code&gt; 后 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl reload httpd&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;API 500 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;NoSuchOptError: no such option enforce_scope&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;新版 oslo.policy 已删除该选项，&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;placement/deploy.py&lt;/code&gt; 直接引用它&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;改成 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;if not getattr(conf.oslo_policy, &amp;#39;enforce_scope&amp;#39;, True):&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;调度报 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;No valid host was found&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;资源不足 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;或&lt;/span&gt; 资源提供者库存未上报&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;先 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack resource provider inventory list&lt;/code&gt;，再查 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-scheduler.log&lt;/code&gt; 的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Filter&lt;/code&gt; 行&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;实例创建 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;409 Conflict&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;库存为 0/未生成&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl restart nova-compute&lt;/code&gt; 触发上报&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# placement 端到端三步（用 token 才算真验证）&lt;/span&gt;&lt;br/&gt;TOKEN=$(openstack token issue -f value -c &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;id&lt;/span&gt;)&lt;br/&gt;curl -s -o /dev/null -w &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%{http_code}\n&amp;#39;&lt;/span&gt; -H &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;X-Auth-Token: &lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$TOKEN&lt;/span&gt;&amp;quot;&lt;/span&gt; http://controller:8778/&lt;br/&gt;openstack resource provider list&lt;br/&gt;openstack resource provider usage show &amp;lt;rp-uuid&amp;gt;&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -100 /var/log/httpd/placement_error.log&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h3 id=&quot;45-nova-与-privsep-故障&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#45-nova-%E4%B8%8E-privsep-%E6%95%85%E9%9A%9C&quot; name=&quot;45-nova-与-privsep-故障&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.5 nova 与 privsep 故障&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;这是本版本&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;实例创建失败最高发&lt;/span&gt;的一组问题，四处配置缺一不可：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-text&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;/etc/nova/rootwrap.conf &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ← 存在&lt;br/&gt;/etc/nova/rootwrap.d/compute.filters &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← 存在&lt;br/&gt;/etc/nova/rootwrap.d/privsep-extra.filters &amp;nbsp;← 自建，必须含 [Filters] 段头&lt;br/&gt;/usr/local/bin/privsep-helper、nova-rootwrap ← 指向 venv 的软链（sudo secure_path 可达）&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;报错&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修复&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;FailedToDropPrivileges: privsep helper command exited non-zero (97)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;rootwrap &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;过滤器&lt;/span&gt;缺失（&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;vif_plug_ovs&lt;/code&gt; 上下文）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;新增 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;privsep-extra.filters&lt;/code&gt;，&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;必须有 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[Filters]&lt;/code&gt; 段头&lt;/span&gt;，否则文件被忽略&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;FailedToDropPrivileges ... (1)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;sudo privsep-helper&lt;/code&gt; 在 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;secure_path&lt;/code&gt; 里找不到（装在 venv）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ln -sf /data/openstack/venv/bin/privsep-helper /usr/local/bin/privsep-helper&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ModuleNotFoundError: No module named &amp;#39;libvirt&amp;#39;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;venv 无 libvirt 绑定&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;dnf install -y libvirt-devel python3-libvirt&lt;/code&gt;，再软链 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;.py&lt;/code&gt; 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;.so&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Compute driver option required&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;缺 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;compute_driver&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[DEFAULT] compute_driver = libvirt.LibvirtDriver&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;标准补齐动作：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;mkdir&lt;/span&gt; -p /etc/nova/rootwrap.d&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;cp&lt;/span&gt; /data/src/nova-32.2.2.dev2/etc/nova/rootwrap.conf /etc/nova/&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;cp&lt;/span&gt; /data/src/nova-32.2.2.dev2/etc/nova/rootwrap.d/compute.filters /etc/nova/rootwrap.d/&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;cat&lt;/span&gt; &amp;gt; /etc/nova/rootwrap.d/privsep-extra.filters &amp;lt;&amp;lt;&lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;EOF&amp;#39;&lt;/span&gt;&lt;br/&gt;[Filters]&lt;br/&gt;privsep-rootwrap-vif_plug: RegExpFilter, privsep-helper, root, privsep-helper, --config-file, /etc/(?!\.\.).*, --privsep_context, vif_plug_ovs.privsep.vif_plug, --privsep_sock_path, /tmp/.*&lt;br/&gt;EOF&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;ln&lt;/span&gt; -sf /data/openstack/venv/bin/privsep-helper /usr/local/bin/privsep-helper&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;ln&lt;/span&gt; -sf /data/openstack/venv/bin/nova-rootwrap /usr/local/bin/nova-rootwrap&lt;br/&gt;systemctl restart nova-compute&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 验证 privsep 是否真的通了（手工跑一次过滤器）&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;sudo&lt;/span&gt; -n /usr/local/bin/privsep-helper --config-file /etc/nova/nova.conf 2&amp;gt;&amp;amp;1 | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;head&lt;/span&gt; -3&lt;br/&gt;grep -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;^\[Filters\]&amp;#39;&lt;/span&gt; /etc/nova/rootwrap.d/*.filters&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;rootwrap 过滤器&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;任何语法错误都会静默退化为&amp;quot;找不到命令&amp;quot;&lt;/span&gt;，表现为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;(97)&lt;/code&gt; 而非配置错误。 改完必须重启 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-compute&lt;/code&gt;（过滤器在进程启动时加载）。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;46-neutron-故障&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#46-neutron-%E6%95%85%E9%9A%9C&quot; name=&quot;46-neutron-故障&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.6 neutron 故障&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修复&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;API 500 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;AttributeError: neutron_lib.constants has no attribute ...&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;neutron-lib 版本过新&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;pip install &amp;#39;neutron-lib==3.21.1&amp;#39;&lt;/code&gt; 后重启全部 neutron 进程&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;agent &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;active&lt;/code&gt; 却不在列表中&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;2025.2 agent 依赖独立 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-rpc-server&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl enable --now neutron-rpc-server&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;OVS agent &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Bridge br-provider ... does not exist&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;网桥未建&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ovs-vsctl --may-exist add-br br-provider&lt;/code&gt;（&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;不接物理网卡&lt;/span&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;OVS agent &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;FailedToDropPrivileges&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;缺 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;rootwrap.conf&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;rootwrap.d/&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-rootwrap&lt;/code&gt; 软链&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;从源码复制 + &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ln -sf ... /usr/local/bin/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;nova→neutron 401&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;服务令牌缺 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;service_token_roles&lt;/code&gt; 要求的角色&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack role create service&lt;/code&gt; 并授予所有服务用户&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;实例 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Failed to allocate the network(s), not rescheduling&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;neutron 没把 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;network-vif-plugged&lt;/code&gt; 通知 nova&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;开 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;notify_nova_on_port_status_changes/_data_changes&lt;/code&gt; 并配 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[nova]&lt;/code&gt; 段&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 端口绑定状态是网络类故障的第一证据&lt;/span&gt;&lt;br/&gt;openstack port show &amp;lt;port&amp;gt; -f yaml | grep -E &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;binding|status|device&amp;#39;&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 期望：binding:vif_type=ovs、binding:host_id=open88、status=ACTIVE&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;grep -E &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;Error|ERROR|Traceback&amp;#39;&lt;/span&gt; /data/openstack/neutron/openvswitch-agent.log | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -30&lt;br/&gt;ovs-vsctl show | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;head&lt;/span&gt; -40&lt;br/&gt;ovs-ofctl dump-flows br-int | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;wc&lt;/span&gt; -l&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;「实例能 ping 自己但不同网段不通」→ 多半是 L3 agent 未起或 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;qrouter&lt;/code&gt; 命名空间缺 NAT 规则； 「同网段不通」→ 查 OVS 流表与 port security（&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;port_security&lt;/code&gt; 扩展驱动是否启用）。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;47-horizon带策略校验的按钮全部消失&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#47-horizon%E5%B8%A6%E7%AD%96%E7%95%A5%E6%A0%A1%E9%AA%8C%E7%9A%84%E6%8C%89%E9%92%AE%E5%85%A8%E9%83%A8%E6%B6%88%E5%A4%B1&quot; name=&quot;47-horizon带策略校验的按钮全部消失&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.7 horizon：带策略校验的按钮全部消失&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;现象&lt;/span&gt;：admin 登录后，实例表里带 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;policy_rules&lt;/code&gt; 的动作（Delete / Start / Stop / Reboot / Resize…） 全部不显示，而不带策略的动作（Create Snapshot、Console、Attach Interface）正常；菜单完整、 静态资源全部 200、无报错。&lt;/p&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;根因（两层叠加）&lt;/span&gt;：&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;oslo.policy 6.0.1&lt;/code&gt; &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;已移除 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;enforce_scope&lt;/code&gt; 选项&lt;/span&gt;，作用域校验恒为开启，Horizon 的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;policy_opts.set_defaults(conf, enforce_scope=False)&lt;/code&gt; 被静默忽略。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack_auth._user_to_credentials()&lt;/code&gt; 把&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;用户所属域&lt;/span&gt;写进了凭据的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;domain_id&lt;/code&gt;，而 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;oslo_policy&lt;/code&gt; 按下面优先级判定令牌作用域：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative;&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-python&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;if&lt;/span&gt; creds.get(&lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;system&amp;#39;&lt;/span&gt;): &amp;nbsp; &amp;nbsp; &amp;nbsp;token_scope = &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;system&amp;#39;&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;elif&lt;/span&gt; creds.get(&lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;domain_id&amp;#39;&lt;/span&gt;): token_scope = &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;domain&amp;#39;&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ← 命中，误判&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;else&lt;/span&gt;: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;token_scope = &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;project&amp;#39;&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;于是&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;项目作用域令牌被当成域作用域&lt;/span&gt;，凡 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;scope_types=[&amp;#39;project&amp;#39;]&lt;/code&gt; 的规则一律返回 False。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;进程内验证&lt;/span&gt;（在 site-packages 目录执行，直接看判定值）：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;cd&lt;/span&gt; /data/openstack/venv/lib/python3.11/site-packages &amp;amp;&amp;amp; /data/openstack/venv/bin/python3 -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;&lt;br/&gt;import sys,os,django; sys.path.insert(0,&amp;#39;.&amp;#39;)&lt;br/&gt;os.environ.setdefault(&amp;#39;DJANGO_SETTINGS_MODULE&amp;#39;,&amp;#39;openstack_dashboard.settings&amp;#39;); django.setup()&lt;br/&gt;from django.test import Client, RequestFactory&lt;br/&gt;from django.contrib import auth as dj_auth&lt;br/&gt;from openstack_auth import policy as ap&lt;br/&gt;c=Client(); c.post(&amp;#39;/auth/login/&amp;#39;,{&amp;#39;username&amp;#39;:&amp;#39;admin&amp;#39;,&amp;#39;password&amp;#39;:&amp;#39;ADMIN_PASS&amp;#39;,&amp;#39;region&amp;#39;:&amp;#39;default&amp;#39;,&amp;#39;domain&amp;#39;:&amp;#39;Default&amp;#39;})&lt;br/&gt;rf=RequestFactory(); req=rf.get(&amp;#39;/&amp;#39;); req.session=c.session; dj_auth.get_user(req)&lt;br/&gt;print(ap.check(((&amp;#39;compute&amp;#39;,&amp;#39;os_compute_api:servers:delete&amp;#39;),), req)) &amp;nbsp; # False 即命中本故障&lt;br/&gt;&amp;quot;&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;修复&lt;/span&gt;（对齐上游：凭据里不再返回 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;domain_id&lt;/code&gt;）：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;F=$(/data/openstack/venv/bin/python3 -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;import openstack_auth,os;print(os.path.join(os.path.dirname(openstack_auth.__file__),&amp;#39;policy.py&amp;#39;))&amp;quot;&lt;/span&gt;)&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;cp&lt;/span&gt; -a &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$F&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$F&lt;/span&gt;.bak.&lt;span class=&quot;hljs-subst&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #333333;&quot;&gt;$(date +%Y%m%d%H%M%S)&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br/&gt;vi &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;&lt;span class=&quot;hljs-variable&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #ED6A43;&quot;&gt;$F&lt;/span&gt;&amp;quot;&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 在 _user_to_credentials() 中删除 &amp;#39;domain_id&amp;#39;: user.user_domain_id, 这一行&lt;/span&gt;&lt;br/&gt;systemctl restart httpd&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;check()&lt;/code&gt; 内对 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;target&lt;/span&gt; 注入 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;domain_id&lt;/code&gt;（供 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;domain_id:%(target.domain_id)s&lt;/code&gt; 类规则使用）&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;必须保留&lt;/span&gt;， 只能删 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;credentials&lt;/span&gt;（令牌作用域）里的那一行。&lt;/p&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;验证：重启后页面上 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Delete Instance&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Start Instance&lt;/code&gt; 应重新出现；上述 python 片段应打印 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;True&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;48-cindercinder-volume-down-与卷组依赖环&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#48-cindercinder-volume-down-%E4%B8%8E%E5%8D%B7%E7%BB%84%E4%BE%9D%E8%B5%96%E7%8E%AF&quot; name=&quot;48-cindercinder-volume-down-与卷组依赖环&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.8 cinder：cinder-volume down 与卷组依赖环&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;现象&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack volume service list&lt;/code&gt; 中 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volume open88@lvm&lt;/code&gt; 状态 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;down&lt;/span&gt;， 无法创建卷，日志反复出现：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-text&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;Manager for service cinder-volume open88@lvm is reporting problems, not sending heartbeat.&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;根因&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volumes-loop.service&lt;/code&gt; 启动失败（&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;bad unit file setting&lt;/code&gt; / 依赖环）， 导致 loop 设备未挂接、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volumes&lt;/code&gt; 卷组不存在，LVM 后端初始化失败。&lt;/p&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;本机实测的两个硬伤与规避：&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;单元文件中存在 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Requires&lt;/code&gt; 自环（&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;loop&lt;/code&gt; 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;volume&lt;/code&gt; 互相 Requires）→ 去掉环，改用 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Before=cinder-volume.service shutdown.target&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;vgscan --mknodes&lt;/code&gt; 在部分环境返回非零（码 5），脚本 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;set -e&lt;/code&gt; 下会误伤中止 → 加 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;|| true&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;修复与验证&lt;/span&gt;：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemd-analyze verify /usr/lib/systemd/system/cinder-volumes-loop.service &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 定位 bad-setting&lt;/span&gt;&lt;br/&gt;systemctl start cinder-volumes-loop&lt;br/&gt;vgs cinder-volumes&lt;br/&gt;systemctl restart cinder-volume&lt;br/&gt;openstack volume service list &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 恢复 up&lt;/span&gt;&lt;br/&gt;openstack volume create --size 1 testvol &amp;amp;&amp;amp; openstack volume delete testvol&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;判断顺序&lt;/span&gt;（顺序错了会白折腾）：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;loop 设备&lt;/code&gt; → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;卷组&lt;/code&gt; → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volumes-loop&lt;/code&gt; 单元 → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volume&lt;/code&gt; 进程 → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;volume service list&lt;/code&gt;。&lt;/p&gt;&lt;h3 id=&quot;49-metadata-服务链路故障&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#49-metadata-%E6%9C%8D%E5%8A%A1%E9%93%BE%E8%B7%AF%E6%95%85%E9%9A%9C&quot; name=&quot;49-metadata-服务链路故障&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.9 metadata 服务链路故障&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;实例的&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;密钥注入 / 重置密码 / cloud-init&lt;/span&gt; 全依赖 metadata，链路是：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-text&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;实例 169.254.169.254 → qrouter/qdhcp 命名空间 → neutron-metadata-agent (:8775 转发)&lt;br/&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; → nova-api metadata（httpd，/etc/nova/nova.conf [api] metadata）&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;症状&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;根因&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修复&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;实例拿不到密钥（登录被拒）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;metadata 链路断，cloud-init 无数据可拉&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;按下方顺序逐段验证&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Unexpected response code: 300&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;metadata_agent.ini&lt;/code&gt; 的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova_metadata_port&lt;/code&gt; 写成 8774，拿到 API 版本列表&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;改为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;8775&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;metadata 500&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;WSGI 入口签名不对&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/nova/wsgi/metadata.py&lt;/code&gt; 用 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;init_application(&amp;#39;metadata&amp;#39;)&lt;/code&gt;（本版本&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;只接受 1 个参数&lt;/span&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 逐段验证（自下而上）&lt;/span&gt;&lt;br/&gt;curl -s -o /dev/null -w &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;%{http_code}\n&amp;#39;&lt;/span&gt; http://controller:8775/openstack &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 400 属正常（裸请求）&lt;/span&gt;&lt;br/&gt;grep -E &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;nova_metadata_(host|port)&amp;#39;&lt;/span&gt; /etc/neutron/metadata_agent.ini &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# port 必须 8775&lt;/span&gt;&lt;br/&gt;systemctl status neutron-metadata-agent --no-pager&lt;br/&gt;ip netns &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;exec&lt;/span&gt; qrouter-&amp;lt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;id&lt;/span&gt;&amp;gt; curl -s -m 3 http://169.254.169.254/openstack &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 命名空间内直取&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -50 /data/openstack/neutron/metadata-agent.log&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;只影响&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;新实例&lt;/span&gt;的密钥注入；存量实例若不生效，检查 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/root/.ssh/authorized_keys&lt;/code&gt; 是否被 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;command=&amp;quot;echo Please login as ...&amp;quot;&lt;/code&gt; 前缀拦截（镜像内 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;disable_root&lt;/code&gt; 导致）。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;410-宿主机重启后的三类假故障&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#410-%E5%AE%BF%E4%B8%BB%E6%9C%BA%E9%87%8D%E5%90%AF%E5%90%8E%E7%9A%84%E4%B8%89%E7%B1%BB%E5%81%87%E6%95%85%E9%9A%9C&quot; name=&quot;410-宿主机重启后的三类假故障&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.10 宿主机重启后的三类假故障&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;重启后报「不通/打不开」，先分清是三类里的哪一类，避免瞎改配置：&lt;/p&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;类别&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;现象&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;判定&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;处置&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;① 实例没起来&lt;/span&gt;（最常见）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;浮动 IP 不通、SSH 拒绝&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack server list&lt;/code&gt; 显示 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;SHUTOFF&lt;/span&gt;，&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;virsh list --all&lt;/code&gt; 域关闭&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack server start &amp;lt;实例&amp;gt;&lt;/code&gt;，等 20–40 秒&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;② 网络自愈未完成&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;br0 无管理 IP、veth 未 forwarding&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ip -4 addr show br0&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cat /sys/class/net/veth-br0/brport/state&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl restart br0-provider-veth&lt;/code&gt;；仍不行按 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#55-%E5%8D%B1%E9%99%A9%E6%93%8D%E4%BD%9C%E4%B8%8E%E5%9B%9E%E6%BB%9A&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;5.5&lt;/a&gt; 回滚&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;③ 服务未自启&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;API 500/连不上&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl --failed&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;逐个 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl enable --now &amp;lt;unit&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;为什么实例不会自动起&lt;/span&gt;：libvirt 未开 autostart。两种解法：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 方式 A：单实例 libvirt autostart&lt;/span&gt;&lt;br/&gt;virsh autostart instance-00000004&lt;br/&gt;virsh list --all --autostart&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 方式 B：nova 全局开关（推荐，对所有 nova 管理的实例生效）&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# /etc/nova/nova.conf → [DEFAULT] resume_guests_state_on_host_boot = True&lt;/span&gt;&lt;br/&gt;systemctl restart nova-compute&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;方式 B 要求实例的 libvirt 域可被重建；磁盘/配置缺失时会被跳过并记告警，查 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-compute.log&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;开机后 20 秒自检&lt;/span&gt;（建议做成登录提示或 systemd 单元）：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl is-active br0-provider-veth&lt;br/&gt;ip -4 addr show br0 | grep 192.168.3.88&lt;br/&gt;ovs-vsctl list-ports br-provider | grep veth-brex&lt;br/&gt;systemctl --failed&lt;br/&gt;openstack compute service list&lt;br/&gt;openstack network agent list&lt;br/&gt;openstack volume service list&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h3 id=&quot;411-实例创建失败的通用排查路径&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#411-%E5%AE%9E%E4%BE%8B%E5%88%9B%E5%BB%BA%E5%A4%B1%E8%B4%A5%E7%9A%84%E9%80%9A%E7%94%A8%E6%8E%92%E6%9F%A5%E8%B7%AF%E5%BE%84&quot; name=&quot;411-实例创建失败的通用排查路径&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.11 实例创建失败的通用排查路径&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;按顺序执行，&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;每步不过就停&lt;/span&gt;，可以覆盖绝大多数 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ERROR&lt;/code&gt;：&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ① 状态与报错原文（最快命中根因）&lt;/span&gt;&lt;br/&gt;openstack server show &amp;lt;实例&amp;gt; -f value -c status -c task_state -c fault&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ② 是否镜像问题：镜像 active？min_ram/min_disk 是否满足 flavour？&lt;/span&gt;&lt;br/&gt;openstack image show &amp;lt;镜像&amp;gt; -f value -c status -c size -c min_disk -c min_ram&lt;br/&gt;openstack flavor show &amp;lt;flavour&amp;gt; -f value -c vcpus -c ram -c disk&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ③ 是否配额问题&lt;/span&gt;&lt;br/&gt;openstack quota show &amp;lt;project&amp;gt; -f yaml&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ④ 是否资源/调度问题（placement 账本 + scheduler 日志）&lt;/span&gt;&lt;br/&gt;openstack resource provider usage show &amp;lt;rp-uuid&amp;gt;&lt;br/&gt;grep -E &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;No valid host|Filter|Weight&amp;#39;&lt;/span&gt; /data/openstack/nova/nova-scheduler.log | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -20&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ⑤ 是否网络问题（port 是否绑定成功）&lt;/span&gt;&lt;br/&gt;openstack port list --server &amp;lt;实例&amp;gt;&lt;br/&gt;openstack port show &amp;lt;port&amp;gt; -f yaml | grep -E &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;binding|status&amp;#39;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ⑥ 是否计算节点侧问题（这步命中率最高）&lt;/span&gt;&lt;br/&gt;grep -E &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;#39;ERROR|Traceback|privsep|FailedToDropPrivileges&amp;#39;&lt;/span&gt; \&lt;br/&gt; &amp;nbsp; &amp;nbsp; /data/openstack/nova/nova-compute.log | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -40&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -50 /var/log/libvirt/qemu/instance-*.&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;log&lt;/span&gt;&lt;br/&gt;virsh list --all&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;task_state&lt;/code&gt; 的值直接指明卡在哪一步&lt;/span&gt;：&lt;/p&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;task_state&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;卡住的环节&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;去哪看&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;scheduling&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;调度/资源不足&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-scheduler.log&lt;/code&gt;、placement&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;networking&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;建 port / 绑定失败&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;neutron-*&lt;/code&gt; 日志、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;port show&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;block_device_mapping&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;卷挂载/镜像下载&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;cinder-volume.log&lt;/code&gt;、glance&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;spawning&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;起虚机失败&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nova-compute.log&lt;/code&gt;、libvirt&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;powering-on&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;虚机起不来&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/var/log/libvirt/qemu/*.log&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;image_snapshot&lt;/code&gt; / &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;deleting&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;长期挂住&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;清理残留后重试&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id=&quot;412-通用陷阱&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#412-%E9%80%9A%E7%94%A8%E9%99%B7%E9%98%B1&quot; name=&quot;412-通用陷阱&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;4.12 通用陷阱&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;陷阱&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;说明&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;正确做法&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;pkill -f &amp;lt;关键字&amp;gt;&lt;/code&gt; 杀掉自己&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;模式串会匹配到执行它的 shell 自身，表现为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;[process terminated by signal]&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ps -eo pid,cmd | grep &amp;quot;[v]env/bin/&amp;lt;svc&amp;gt;&amp;quot;&lt;/code&gt; 定位后再 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;kill &amp;lt;pid&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;nohup&lt;/code&gt; 起服务&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;会话结束即被回收&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;一律 systemd 托管&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;pip 安装看似&amp;quot;卡死&amp;quot;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;源码编译耗时长，命令超时属正常&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;后台跑 + &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;pgrep -f &amp;quot;venv/bin/pip&amp;quot;&lt;/code&gt; 轮询&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;eventlet&lt;/code&gt; 版本漂移&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;0.41.2&lt;/code&gt; 可用；&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;0.36.x&lt;/code&gt; 触发 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;&amp;#39;HubThread&amp;#39; object has no attribute &amp;#39;kill&amp;#39;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;锁版本，勿随意升级&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;配置文件写中文注释&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;httpd 下 locale=C，ASCII 解码失败&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;oslo 配置文件注释全用英文&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;用名字操作安全组&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;多项目下 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;default&lt;/code&gt; 重名，命令静默失败&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;一律用 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;ID&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;SG=$(openstack security group list ... -c ID)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;在宿主根命名空间改默认路由&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;一条 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ip route replace default&lt;/code&gt; 即可全网黑洞&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;只在 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ip netns exec&lt;/code&gt; 内改，见 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#55-%E5%8D%B1%E9%99%A9%E6%93%8D%E4%BD%9C%E4%B8%8E%E5%9B%9E%E6%BB%9A&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;5.5&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;只重启 httpd 就以为换了代码&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;WSGIDaemonProcess 会缓存已导入模块&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;改 venv 内 Python 代码后 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl restart httpd&lt;/code&gt;；必要时先杀 daemon 进程&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr style=&quot;white-space: normal; border-width: 1px 0px 0px; border-style: solid none none; border-color: rgb(227, 227, 238) currentcolor currentcolor; border-image: none; box-sizing: content-box; margin: 16px 0px; padding: 0px; color: inherit; height: 0px; overflow: visible; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;h2 id=&quot;5-附录&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#5-%E9%99%84%E5%BD%95&quot; name=&quot;5-附录&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;5. 附录&lt;/h2&gt;&lt;h3 id=&quot;51-端口与服务目录&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#51-%E7%AB%AF%E5%8F%A3%E4%B8%8E%E6%9C%8D%E5%8A%A1%E7%9B%AE%E5%BD%95&quot; name=&quot;51-端口与服务目录&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;5.1 端口与服务目录&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;端口&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;进程 / 服务&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;端点&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;5000&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;keystone（httpd）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;identity&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;http://controller:5000/v3/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;9292&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;glance-api&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;image&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;http://controller:9292&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;8778&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;placement（httpd）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;placement&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;http://controller:8778&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;8774&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;nova-api（httpd）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;compute&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;http://controller:8774/v2.1&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;8775&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;nova metadata（httpd）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;metadata&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;http://controller:8775&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;6080&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;nova-novncproxy&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;console&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;Web 控制台代理&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;9696&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;neutron-server&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;network&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;http://controller:9696&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;8776&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;cinder-api&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;volume / volumev3&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;http://controller:8776/v3/%(project_id)s&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;80&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;httpd&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;dashboard&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;http://controller/dashboard/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;3306&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;MariaDB&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;DB&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/mysql/mysql.sock&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;5672&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;RabbitMQ&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;MQ&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;rabbit://openstack:***@controller:5672/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;11211&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;memcached&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;cache&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;controller:11211&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;Region&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;RegionOne&lt;/code&gt;。一个服务必须注册 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;public / internal / admin 三套端点&lt;/span&gt;，缺一套时 CLI 会挑不到地址（表现为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;Could not determine a suitable URL&lt;/code&gt;）。&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;openstack endpoint list -f value -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;Service Name&amp;quot;&lt;/span&gt; -c Interface -c URL | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;sort&lt;/span&gt;&lt;br/&gt;openstack catalog list&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h3 id=&quot;52-路径与单元速查&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#52-%E8%B7%AF%E5%BE%84%E4%B8%8E%E5%8D%95%E5%85%83%E9%80%9F%E6%9F%A5&quot; name=&quot;52-路径与单元速查&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;5.2 路径与单元速查&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;项目&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;值&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;admin 凭据&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/admin-openrc.sh&lt;/code&gt;（600）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;Python / CLI&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/venv/bin&lt;/code&gt;（含 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;*-manage&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;源码包&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/src/&amp;lt;svc&amp;gt;-&amp;lt;ver&amp;gt;/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;配置文件&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/etc/{keystone,glance,placement,nova,neutron,cinder}/&amp;lt;svc&amp;gt;.conf&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;WSGI 入口&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/{keystone,placement,nova/wsgi,horizon/wsgi}/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;数据与日志&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/&amp;lt;svc&amp;gt;/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;虚拟机磁盘&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/libvirt/images/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;镜像实体&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/glance/images/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;卷（loop）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/cinder/volumes.img&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;单元目录&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/usr/lib/systemd/system/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;网络自愈脚本&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/usr/local/sbin/br0-provider-veth.sh&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;断网看门狗&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/root/net-watchdog.sh&lt;/code&gt;、确认标记 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/root/net-switch-OK&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id=&quot;53-巡检清单&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#53-%E5%B7%A1%E6%A3%80%E6%B8%85%E5%8D%95&quot; name=&quot;53-巡检清单&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;5.3 巡检清单&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;每日（30 秒）&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl --failed&lt;br/&gt;openstack compute service list -f value -c Binary -c State -c Status&lt;br/&gt;openstack network agent list -f value -c &lt;span class=&quot;hljs-string&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;&amp;quot;Agent Type&amp;quot;&lt;/span&gt; -c Alive&lt;br/&gt;openstack volume service list -f value -c Binary -c State&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;df&lt;/span&gt; -h /data | &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;tail&lt;/span&gt; -1&lt;br/&gt;vgs cinder-volumes&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;变更后（改配置 / 升级 / 换镜像）&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;systemctl daemon-reload&lt;br/&gt;systemctl restart &amp;lt;受影响单元&amp;gt;&lt;br/&gt;systemctl --failed&lt;br/&gt;openstack token issue -f value -c expires&lt;br/&gt;openstack image list&lt;br/&gt;openstack server create --flavor m1.tiny --image cirros --nic net-id=&amp;lt;net&amp;gt; smoke-test&lt;br/&gt;openstack server delete smoke-test&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;重启后&lt;/span&gt;：见 &lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#410-%E5%AE%BF%E4%B8%BB%E6%9C%BA%E9%87%8D%E5%90%AF%E5%90%8E%E7%9A%84%E4%B8%89%E7%B1%BB%E5%81%87%E6%95%85%E9%9A%9C&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;4.10&lt;/a&gt; 的三类判定与自检命令。&lt;/p&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;验收脚本（一次性把 55 项过一遍）&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;cd&lt;/span&gt; /opt/openstack-Flamingo/deploy/install&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;sudo&lt;/span&gt; ./90-verify.sh &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 全量（含端到端创建实例）&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;sudo&lt;/span&gt; ./90-verify.sh --quick &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 只查服务与端口&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h3 id=&quot;54-备份与恢复&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#54-%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D&quot; name=&quot;54-备份与恢复&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;5.4 备份与恢复&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;必须备份的四类东西&lt;/span&gt;（其余可重建）：&lt;/p&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;对象&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;命令&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;数据库（keystone/nova/neutron/cinder/placement）&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;mysqldump --single-transaction --all-databases &amp;gt; /data/backup/db-$(date +%F).sql&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;fernet / credential 密钥&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;tar czf /data/backup/keys-$(date +%F).tgz /data/openstack/keystone/fernet-keys* /data/openstack/keystone/credential-keys&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;全部配置&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;tar czf /data/backup/etc-$(date +%F).tgz /etc/keystone /etc/glance /etc/placement /etc/nova /etc/neutron /etc/cinder /etc/httpd/conf.d&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;关键自定义代码补丁&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;把 venv 内改过的文件（如 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack_auth/policy.py&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;placement/deploy.py&lt;/code&gt;）单独留档&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;恢复要点&lt;/span&gt;：先停 OpenStack 单元（保留 mariadb/rabbitmq）→ 恢复 DB 与密钥 → 恢复配置 → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;daemon-reload&lt;/code&gt; → 按依赖顺序启动（keystone → glance/placement → nova → neutron → cinder → horizon）。 &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;fernet 密钥与数据库必须成对恢复&lt;/span&gt;，只恢复其一会导致全部 token/凭据不可用。&lt;/p&gt;&lt;h3 id=&quot;55-危险操作与回滚&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#55-%E5%8D%B1%E9%99%A9%E6%93%8D%E4%BD%9C%E4%B8%8E%E5%9B%9E%E6%BB%9A&quot; name=&quot;55-危险操作与回滚&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;5.5 危险操作与回滚&lt;/h3&gt;&lt;h4 id=&quot;绝对禁止的操作&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E7%BB%9D%E5%AF%B9%E7%A6%81%E6%AD%A2%E7%9A%84%E6%93%8D%E4%BD%9C&quot; name=&quot;绝对禁止的操作&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;⚠️ 绝对禁止的操作&lt;/h4&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;操作&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;后果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;在宿主根命名空间执行 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ip route replace/add default ...&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;全局默认路由被覆盖，SSH 与外网立即中断&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;删除 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/keystone/fernet-keys&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;所有 token 失效、加密凭据无法解密&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;删除或缩小 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data/openstack/cinder/volumes.img&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;卷数据丢失且不可恢复&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;直接替换 glance 镜像文件而不改 DB&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;元数据与实体不一致，实例无法启动&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ovs-vsctl del-br br-provider&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;所有实例网络中断，需重建网桥并重启 OVS agent&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4 id=&quot;网络出口变更的回滚br0-veth&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E7%BD%91%E7%BB%9C%E5%87%BA%E5%8F%A3%E5%8F%98%E6%9B%B4%E7%9A%84%E5%9B%9E%E6%BB%9Abr0-veth&quot; name=&quot;网络出口变更的回滚br0-veth&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;网络出口变更的回滚（br0 + veth）&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ① 拆 veth 对&lt;/span&gt;&lt;br/&gt;ovs-vsctl --if-exists del-port br-provider veth-brex&lt;br/&gt;ip &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;link&lt;/span&gt; del veth-br0&lt;br/&gt;systemctl &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;disable&lt;/span&gt; --now br0-provider-veth 2&amp;gt;/dev/null&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ② 拆 br0，把管理 IP 还给 enp2s0&lt;/span&gt;&lt;br/&gt;nmcli con down br0&lt;br/&gt;nmcli con delete br0-slave-enp2s0 2&amp;gt;/dev/null&lt;br/&gt;nmcli con delete br0 2&amp;gt;/dev/null&lt;br/&gt;nmcli con mod enp2s0 connection.autoconnect &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;yes&lt;/span&gt;&lt;br/&gt;nmcli con up enp2s0&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# ③ 校验&lt;/span&gt;&lt;br/&gt;ip -4 addr show enp2s0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 应恢复 192.168.3.88/24&lt;/span&gt;&lt;br/&gt;ip route show default &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# default via 192.168.3.1 dev enp2s0&lt;/span&gt;&lt;br/&gt;ping -c2 192.168.3.1&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;变更前&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;必须&lt;/span&gt;做的三件事：&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ip route show default&lt;/code&gt; 与 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;ip -4 addr show&lt;/code&gt; &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;先留底&lt;/span&gt;（出事时照抄恢复）；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;用 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;setsid &amp;lt;脚本&amp;gt; &amp;lt;/dev/null &amp;amp;&lt;/code&gt; 让切换脱离 SSH 会话，断开也能跑完；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;另开一个 SSH 窗口守候，并在 300 秒内 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;touch /root/net-switch-OK&lt;/code&gt;，否则看门狗自动回滚：&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;setsid /root/net-watchdog.sh 300 40 &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;lt; /dev/null &amp;amp;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h4 id=&quot;单个实例网络排障的安全做法&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 16px; color: rgb(37, 43, 58); line-height: 1.25; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#%E5%8D%95%E4%B8%AA%E5%AE%9E%E4%BE%8B%E7%BD%91%E7%BB%9C%E6%8E%92%E9%9A%9C%E7%9A%84%E5%AE%89%E5%85%A8%E5%81%9A%E6%B3%95&quot; name=&quot;单个实例网络排障的安全做法&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;单个实例网络排障的安全做法&lt;/h4&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 只在隔离命名空间里试路由，绝不动宿主默认路由&lt;/span&gt;&lt;br/&gt;ip netns add t&lt;br/&gt;ip netns &lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;exec&lt;/span&gt; t ip route add default via 192.0.2.1&lt;br/&gt;ip netns del t&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h3 id=&quot;56-维护约定&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#56-%E7%BB%B4%E6%8A%A4%E7%BA%A6%E5%AE%9A&quot; name=&quot;56-维护约定&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;5.6 维护约定&lt;/h3&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;改配置 = 改完就重启对应层&lt;/span&gt;：httpd 类 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl reload httpd&lt;/code&gt;；systemd 类 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl restart &amp;lt;unit&amp;gt;&lt;/code&gt;；改 Python 代码必须 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;restart&lt;/code&gt;（reload 不换已导入模块）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;改完必验&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;systemctl --failed&lt;/code&gt; + 三张 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack ... service list&lt;/code&gt; 表 + 一次 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;token issue&lt;/code&gt;，任何一项不绿都不算完成。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;配置注释只用英文&lt;/span&gt;（oslo ASCII 解码），中文说明写进本手册或部署文档。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;不用 nohup、不用 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;pkill -f&lt;/code&gt; 裸杀&lt;/span&gt;、不在宿主根命名空间改路由。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;镜像/卷文件变动后同步 DB 元数据&lt;/span&gt;，并 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;openstack image save&lt;/code&gt; 回验 checksum。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;重启后先看实例是否 SHUTOFF&lt;/span&gt;，再怀疑网络。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 id=&quot;57-相关文档&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-Flamingo-%E8%BF%90%E7%BB%B4%E6%89%8B%E5%86%8C.md#57-%E7%9B%B8%E5%85%B3%E6%96%87%E6%A1%A3&quot; name=&quot;57-相关文档&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;5.7 相关文档&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;文档&lt;/th&gt;&lt;th style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;用途&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/OpenStack-2025.2-Flamingo-%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.md&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;OpenStack-2025.2-Flamingo-部署文档.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;从零安装的完整过程与逐条踩坑记录&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/openstack-Flamingo--deploy/blob/main/deploy/README.md&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; text-decoration: underline !important;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;deploy/README.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;一键部署脚本用法（断点续装、干跑、阶段开关）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;deploy/scripts/&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;出口切换、看门狗、开机自检、loop 卷组脚本&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr style=&quot;white-space: normal; border-width: 1px 0px 0px; border-style: solid none none; border-color: rgb(227, 227, 238) currentcolor currentcolor; border-image: none; box-sizing: content-box; margin: 16px 0px; padding: 0px; color: inherit; height: 0px; overflow: visible; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;blockquote style=&quot;white-space: normal; border-width: 0px 0px 0px 4px; border-style: solid; border-color: currentcolor currentcolor currentcolor rgb(227, 227, 238); border-image: none; box-sizing: border-box; margin: 0px 0px 24px; padding: 0px 16px; overflow: auto; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255); word-break: break-word !important;&quot;&gt;&lt;p style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; line-height: 26px; overflow: hidden; word-break: break-word;&quot;&gt;本手册中的所有命令与判据均来自 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;open88&lt;/code&gt; 上实际验证通过的环境。 更换主机名、IP、网卡或发行版后，请同步替换：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;controller&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;192.168.3.88&lt;/code&gt;、 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;enp2s0&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;/data&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px; white-space: pre-wrap;&quot;&gt;RegionOne&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 19 Oct 2026 20:20:08 +0800</pubDate></item><item><title>Openeuler2509 fcitx5 输入法排查与修复记录</title><link>https://www.yjlink.cc/?id=3571</link><description>&lt;h1 cid=&quot;n0&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading md-focus&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 2.25em;position: relative;line-height: 1.2;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; class=&quot;md-plain md-expand&quot; style=&quot;box-sizing: border-box&quot;&gt;Openeuler2509 fcitx5 输入法排查与修复记录&lt;/span&gt;&lt;/h1&gt;&lt;blockquote cid=&quot;n2&quot; mdtype=&quot;blockquote&quot; style=&quot;margin: 0.8em 0px;padding: 0px 15px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;border-left: 4px solid rgb(223, 226, 229);color: rgb(119, 119, 119);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;p cid=&quot;n3&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;本文档完整记录 openEuler 25.09 + UKUI + VNC 环境下 fcitx5 输入法不可用、无法切换五笔等问题的排查过程、根因、修复步骤与验证方法,供后续维护参考。&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;box-sizing: content-box;height: 2px;margin: 16px 0px;border: 0px;padding: 0px;background-color: rgb(231, 231, 231)&quot;/&gt;&lt;h2 cid=&quot;n5&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.75em;position: relative;line-height: 1.225;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;1. 环境&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;figure class=&quot;md-table-fig table-figure&quot; cid=&quot;n6&quot; mdtype=&quot;table&quot; style=&quot;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;margin: 1.2em 0px;overflow-x: auto;max-width: calc(100% + 16px);padding: 0px;cursor: default;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;table class=&quot;md-table&quot; width=&quot;1140&quot;&gt;&lt;thead style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;background-color: rgb(248, 248, 248)&quot;&gt;&lt;tr cid=&quot;n7&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box;padding: 6px 13px;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: initial&quot;&gt;&lt;span cid=&quot;n8&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 118.984px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;项目&lt;/span&gt;&lt;/span&gt;&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box;padding: 6px 13px;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: initial&quot;&gt;&lt;span cid=&quot;n9&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 966.016px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;值&lt;/span&gt;&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box&quot;&gt;&lt;tr cid=&quot;n10&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n11&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 118.984px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;系统&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n12&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 966.016px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;openEuler 25.09(内核 7.2.2 x86_64)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n13&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px;background-color: rgb(248, 248, 248)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n14&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 118.984px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;桌面&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n15&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 966.016px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;UKUI(ukui-session,窗口管理器 kwin)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n16&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n17&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 118.984px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;显示&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n18&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 966.016px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;VNC:Xvnc &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;:1&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(1920x1020,端口 5901),&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;:0&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 是 lightdm-greeter&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n19&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px;background-color: rgb(248, 248, 248)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n20&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 118.984px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;输入法框架&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n21&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 966.016px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;fcitx5 5.1.12(fcitx5-chinese-addons 5.1.6,含拼音/五笔)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n22&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n23&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 118.984px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;输入法列表&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n24&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 966.016px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;keyboard-us&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(英文)+ &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;wbpy&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(五笔拼音,&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;DefaultIM=wbpy&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n25&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px;background-color: rgb(248, 248, 248)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n26&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 118.984px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;环境变量约定&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n27&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 966.016px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;XMODIFIERS=@im=fcitx&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(注意原脚本曾误写为 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;=fcitx&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;,已修正)、&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;GTK_IM_MODULE=fcitx&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;、&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;QT_IM_MODULE=fcitx&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;/p&gt;&lt;hr style=&quot;box-sizing: content-box;height: 2px;margin: 16px 0px;border: 0px;padding: 0px;background-color: rgb(231, 231, 231)&quot;/&gt;&lt;h2 cid=&quot;n29&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.75em;position: relative;line-height: 1.225;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;2. 问题现象&lt;/span&gt;&lt;/h2&gt;&lt;ol start=&quot;&quot; cid=&quot;n30&quot; mdtype=&quot;list&quot; style=&quot;margin: 0.8em 0px;padding: 0px 0px 0px 30px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;position: relative;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p cid=&quot;n32&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;VNC 登录后 fcitx5 输入法不可用 / 时好时坏;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n34&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;出现 fcitx5 托盘窗口,但点击无法切换输入法(无法切到五笔);&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n36&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;日志中出现 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;Failed to open xim, retrying&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr style=&quot;box-sizing: content-box;height: 2px;margin: 16px 0px;border: 0px;padding: 0px;background-color: rgb(231, 231, 231)&quot;/&gt;&lt;h2 cid=&quot;n38&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.75em;position: relative;line-height: 1.225;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;3. 根因分析&lt;/span&gt;&lt;/h2&gt;&lt;h3 cid=&quot;n39&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.5em;position: relative;line-height: 1.43;cursor: text;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;3.1 双实例 + 会话 D-Bus 分裂(切换失效的根本原因)&lt;/span&gt;&lt;/h3&gt;&lt;p cid=&quot;n40&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0.8em 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;line-height: inherit;orphans: 4;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;/root/.vnc/xstartup&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 原先写法:&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;md-fences md-end-block ty-contain-cm modeLoaded&quot; spellcheck=&quot;false&quot; lang=&quot;sh&quot; cid=&quot;n41&quot; mdtype=&quot;fences&quot; style=&quot;box-sizing: border-box; overflow: visible; font-family: &amp;quot;Lucida Console&amp;quot;, Consolas, Courier, monospace; font-size: 0.9em; position: relative; break-inside: avoid; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; color: rgb(51, 51, 51);&quot;&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;unset&lt;/span&gt; DBUS_SESSION_BUS_ADDRESS&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;DISPLAY&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;:1 fcitx5 &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;--replace&lt;/span&gt; &amp;gt;/dev/null &lt;span class=&quot;cm-number&quot; style=&quot;box-sizing: border-box; color: #116644;&quot;&gt;2&lt;/span&gt;&amp;gt;&amp;amp;1 &amp;amp; &amp;nbsp; &lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 提前、无总线启动&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;lightdm &amp;amp;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;ukui-session &amp;amp;&lt;/span&gt;&lt;/pre&gt;&lt;p cid=&quot;n42&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0.8em 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;line-height: inherit;orphans: 4;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;问题链:&lt;/span&gt;&lt;/p&gt;&lt;ol start=&quot;&quot; cid=&quot;n43&quot; mdtype=&quot;list&quot; style=&quot;margin: 0.8em 0px;padding: 0px 0px 0px 30px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;position: relative;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p cid=&quot;n45&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;unset DBUS_SESSION_BUS_ADDRESS&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 后启动的 fcitx5 运行在&lt;/span&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;私有会话总线&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;上;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n47&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;桌面应用(ukui-session 启动的)各自跑在&lt;/span&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;桌面会话总线&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;上,看不到 fcitx5;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n49&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;桌面总线上的应用请求 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;org.fcitx.Fcitx5&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 时,D-Bus 自动激活出&lt;/span&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;第二个 fcitx5 实例&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n51&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;两个 fcitx5 实例争抢 XIM 槽位 → &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;Failed to open xim, retrying&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; → 输入法失灵、切换无效。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 cid=&quot;n52&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.5em;position: relative;line-height: 1.43;cursor: text;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;3.2 托盘图标(次要)&lt;/span&gt;&lt;/h3&gt;&lt;ul cid=&quot;n53&quot; mdtype=&quot;list&quot; data-mark=&quot;-&quot; style=&quot;margin: 0.8em 0px;padding: 0px 0px 0px 30px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;position: relative;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p cid=&quot;n55&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;fcitx5 托盘图标由 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;notificationitem&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 插件(StatusNotifierItem,SNI)提供;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n57&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;本 openEuler 5.1.12 构建里 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;GlobalConfig&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 的 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;DisabledAddons=notificationitem&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 配置&lt;/span&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;运行时实际不生效&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(插件仍被加载,&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;/proc/&amp;lt;pid&amp;gt;/maps&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 可证);&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n59&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;本机 ukui-panel 虽有 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;StatusNotifierWatcher&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;,但 fcitx5 的 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;StatusNotifierItem&lt;/code&gt;&lt;/span&gt; &lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;未注册&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(总线 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;ListNames&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 中无 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;org.kde.StatusNotifierItem-*&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;),因此实际不显示托盘图标;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n61&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;窗口树中的 &lt;/span&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;&amp;quot;Fcitx5 Input Window&amp;quot; 是候选词输入窗口(打字必需),不是托盘&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;,勿混淆。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr style=&quot;box-sizing: content-box;height: 2px;margin: 16px 0px;border: 0px;padding: 0px;background-color: rgb(231, 231, 231)&quot;/&gt;&lt;h2 cid=&quot;n63&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.75em;position: relative;line-height: 1.225;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;4. 修复步骤&lt;/span&gt;&lt;/h2&gt;&lt;h3 cid=&quot;n64&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.5em;position: relative;line-height: 1.43;cursor: text;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;4.1 现场修复(杀掉双实例,在同一桌面总线上重启单个 fcitx5)&lt;/span&gt;&lt;/h3&gt;&lt;pre class=&quot;md-fences md-end-block ty-contain-cm modeLoaded&quot; spellcheck=&quot;false&quot; lang=&quot;bash&quot; cid=&quot;n65&quot; mdtype=&quot;fences&quot; style=&quot;box-sizing: border-box; overflow: visible; font-family: &amp;quot;Lucida Console&amp;quot;, Consolas, Courier, monospace; font-size: 0.9em; position: relative; break-inside: avoid; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; color: rgb(51, 51, 51);&quot;&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 1) 获取桌面会话总线地址(来自 ukui-session / dbus-launch 进程环境)&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;tr &lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;\0&amp;#39;&lt;/span&gt; &lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; &amp;lt; /proc/&lt;span class=&quot;cm-quote&quot; style=&quot;box-sizing: border-box; color: #009900;&quot;&gt;$(pgrep -f &amp;#39;dbus-launch --exit-with-session&amp;#39; | head -1)&lt;/span&gt;/environ \&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt; &amp;nbsp;| &lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;^DBUS_SESSION_BUS_ADDRESS=&amp;#39;&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 形如 unix:path=/tmp/dbus-XXXX,guid=...&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span cm-text=&quot;&quot; cm-zwsp=&quot;&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 2) 杀掉全部 fcitx5 实例&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;kill&lt;/span&gt; &lt;span class=&quot;cm-quote&quot; style=&quot;box-sizing: border-box; color: #009900;&quot;&gt;$(pgrep -x fcitx5)&lt;/span&gt;; &lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;sleep&lt;/span&gt; &lt;span class=&quot;cm-number&quot; style=&quot;box-sizing: border-box; color: #116644;&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span cm-text=&quot;&quot; cm-zwsp=&quot;&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 3) 携带桌面总线地址重启单个 fcitx5&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;DBUS_SESSION_BUS_ADDRESS&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;unix:path=/tmp/dbus-XXXX,guid=...&amp;#39;&lt;/span&gt; \&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt; &amp;nbsp;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;DISPLAY&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;:1 fcitx5 &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;--replace&lt;/span&gt; &amp;gt;/dev/null &lt;span class=&quot;cm-number&quot; style=&quot;box-sizing: border-box; color: #116644;&quot;&gt;2&lt;/span&gt;&amp;gt;&amp;amp;1 &amp;amp;&lt;/span&gt;&lt;/pre&gt;&lt;h3 cid=&quot;n66&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.5em;position: relative;line-height: 1.43;cursor: text;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;4.2 修改 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px&quot;&gt;/root/.vnc/xstartup&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(保证登录时正确启动,最终内容)&lt;/span&gt;&lt;/h3&gt;&lt;pre class=&quot;md-fences md-end-block ty-contain-cm modeLoaded&quot; spellcheck=&quot;false&quot; lang=&quot;sh&quot; cid=&quot;n67&quot; mdtype=&quot;fences&quot; style=&quot;box-sizing: border-box; overflow: visible; font-family: &amp;quot;Lucida Console&amp;quot;, Consolas, Courier, monospace; font-size: 0.9em; position: relative; break-inside: avoid; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; color: rgb(51, 51, 51);&quot;&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-meta&quot; style=&quot;box-sizing: border-box; color: #555555;&quot;&gt;#!/bin/sh&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;unset&lt;/span&gt; SESSION_MANAGER&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;unset&lt;/span&gt; DBUS_SESSION_BUS_ADDRESS&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;GTK_IM_MODULE&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;fcitx&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;QT_IM_MODULE&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;fcitx&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;XMODIFIERS&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;@im=fcitx&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;lightdm &amp;amp;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;ukui-session &amp;amp;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 等待桌面会话总线就绪后,再在同一 D-Bus 上启动 fcitx5,避免桌面总线自动拉起第二个实例&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;cm-number&quot; style=&quot;box-sizing: border-box; color: #116644;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;while&lt;/span&gt; [ &lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-lt&lt;/span&gt; &lt;span class=&quot;cm-number&quot; style=&quot;box-sizing: border-box; color: #116644;&quot;&gt;20&lt;/span&gt; ]; &lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;do&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;BUS&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;for&lt;/span&gt; PID &lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;cm-quote&quot; style=&quot;box-sizing: border-box; color: #009900;&quot;&gt;$(pgrep -x ukui-session; pgrep -f &amp;#39;dbus-launch --exit-with-session&amp;#39;)&lt;/span&gt;; &lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;do&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;BUS&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;cm-quote&quot; style=&quot;box-sizing: border-box; color: #009900;&quot;&gt;$(tr &amp;#39;\0&amp;#39; &amp;#39;\n&amp;#39; &amp;lt; /proc/&lt;/span&gt;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;$PID&lt;/span&gt;&lt;span class=&quot;cm-quote&quot; style=&quot;box-sizing: border-box; color: #009900;&quot;&gt;/environ 2&amp;gt;/dev/null | sed -n &amp;#39;s/^DBUS_SESSION_BUS_ADDRESS=//p&amp;#39;)&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;$BUS&lt;/span&gt;&lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;quot;&lt;/span&gt; ] &amp;amp;&amp;amp; break &lt;span class=&quot;cm-number&quot; style=&quot;box-sizing: border-box; color: #116644;&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;done&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;cm-quote&quot; style=&quot;box-sizing: border-box; color: #009900;&quot;&gt;$((i+1))&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;sleep&lt;/span&gt; &lt;span class=&quot;cm-number&quot; style=&quot;box-sizing: border-box; color: #116644;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;done&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;[ &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;$BUS&lt;/span&gt;&lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;quot;&lt;/span&gt; ] &amp;amp;&amp;amp; &lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;DBUS_SESSION_BUS_ADDRESS&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;$BUS&lt;/span&gt;&lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;DISPLAY&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;:1 fcitx5 &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;--replace&lt;/span&gt; &amp;gt;/dev/null &lt;span class=&quot;cm-number&quot; style=&quot;box-sizing: border-box; color: #116644;&quot;&gt;2&lt;/span&gt;&amp;gt;&amp;amp;1 &amp;amp;&lt;/span&gt;&lt;/pre&gt;&lt;p cid=&quot;n68&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0.8em 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;line-height: inherit;orphans: 4;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;要点:&lt;/span&gt;&lt;/p&gt;&lt;ul cid=&quot;n69&quot; mdtype=&quot;list&quot; data-mark=&quot;-&quot; style=&quot;margin: 0.8em 0px;padding: 0px 0px 0px 30px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;position: relative;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p cid=&quot;n71&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;必须遍历所有 ukui-session 进程&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;再取 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;DBUS_SESSION_BUS_ADDRESS&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;:&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;pgrep -x ukui-session | head -n1&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 会命中&lt;/span&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;没有&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;该变量的进程(真正的变量在 dbus-launch 的子进程上),导致取不到地址、等待 20 秒超时后 fcitx5 又在无总线状态下启动(即又回到 3.1 的坑);&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n73&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;fcitx5 必须与桌面应用&lt;/span&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;共用同一会话总线&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;,否则 D-Bus 会再次自动拉起第二个实例。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 cid=&quot;n74&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.5em;position: relative;line-height: 1.43;cursor: text;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;4.3 禁用托盘图标配置(尽力而为)&lt;/span&gt;&lt;/h3&gt;&lt;p cid=&quot;n75&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0.8em 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;line-height: inherit;orphans: 4;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;~/.config/fcitx5/config&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 的 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;[Behavior]&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 节:&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;md-fences md-end-block ty-contain-cm modeLoaded&quot; spellcheck=&quot;false&quot; lang=&quot;ini&quot; cid=&quot;n76&quot; mdtype=&quot;fences&quot; style=&quot;box-sizing: border-box; overflow: visible; font-family: &amp;quot;Lucida Console&amp;quot;, Consolas, Courier, monospace; font-size: 0.9em; position: relative; break-inside: avoid; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; color: rgb(51, 51, 51);&quot;&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-header&quot; style=&quot;box-sizing: border-box; font-weight: 700; color: #0000FF;&quot;&gt;[Behavior]&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# Force Disabled Addons&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;DisabledAddons&lt;/span&gt;=&lt;span class=&quot;cm-quote&quot; style=&quot;box-sizing: border-box; color: #009900;&quot;&gt;notificationitem&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;blockquote cid=&quot;n77&quot; mdtype=&quot;blockquote&quot; style=&quot;margin: 0.8em 0px;padding: 0px 15px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;border-left: 4px solid rgb(223, 226, 229);color: rgb(119, 119, 119);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;p cid=&quot;n78&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;⚠️ 如实说明:本构建中该配置&lt;/span&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;未真正生效&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(见 3.2),但本机 SNI 本就未注册,实际观察结果即&amp;quot;无托盘图标&amp;quot;。若日后托盘图标出现,可考虑面板侧隐藏或更换 fcitx5 版本再查。&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 cid=&quot;n79&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.5em;position: relative;line-height: 1.43;cursor: text;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;4.4 验证&lt;/span&gt;&lt;/h3&gt;&lt;pre class=&quot;md-fences md-end-block ty-contain-cm modeLoaded&quot; spellcheck=&quot;false&quot; lang=&quot;bash&quot; cid=&quot;n80&quot; mdtype=&quot;fences&quot; style=&quot;box-sizing: border-box; overflow: visible; font-family: &amp;quot;Lucida Console&amp;quot;, Consolas, Courier, monospace; font-size: 0.9em; position: relative; break-inside: avoid; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; color: rgb(51, 51, 51);&quot;&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-keyword&quot; style=&quot;box-sizing: border-box; color: #770088;&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;DISPLAY&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;:1&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 环境变量带桌面总线(按 4.1 取到的值)&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span cm-text=&quot;&quot; cm-zwsp=&quot;&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 1) 实例数应为 1&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;pgrep &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-x&lt;/span&gt; fcitx5; pgrep &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-x&lt;/span&gt; fcitx5&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span cm-text=&quot;&quot; cm-zwsp=&quot;&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 2) 切换五笔/英文&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;fcitx5-remote &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-s&lt;/span&gt; wbpy; fcitx5-remote &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-n&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 应输出 wbpy&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;fcitx5-remote &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-s&lt;/span&gt; keyboard-us; fcitx5-remote &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 应输出 keyboard-us&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span cm-text=&quot;&quot; cm-zwsp=&quot;&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 3) XIM 已注册&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;xprop &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-root&lt;/span&gt; | &lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;grep&lt;/span&gt; XIM_SERVERS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 应含 @server=fcitx&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span cm-text=&quot;&quot; cm-zwsp=&quot;&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 4) 无托盘图标(SNI 未注册,计数为 0)&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;dbus-send &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;--print-reply&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;--dest&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;org.freedesktop.DBus /org/freedesktop/DBus \&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt; &amp;nbsp;org.freedesktop.DBus.ListNames | &lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-c&lt;/span&gt; StatusNotifierItem&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span cm-text=&quot;&quot; cm-zwsp=&quot;&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 5) 窗口检查(需先安装:dnf install -y xwininfo)&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;xwininfo &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-root&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-tree&lt;/span&gt; | &lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-iE&lt;/span&gt; &lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;fcitx&amp;#39;&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 只应有 Fcitx5 Input Window(候选词窗)&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p cid=&quot;n81&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0.8em 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;line-height: inherit;orphans: 4;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;已验证结果:单实例 ✅、wbpy ↔ keyboard-us 切换正常 ✅、XIM 已注册 ✅、无托盘窗口 ✅。&lt;/span&gt;&lt;/p&gt;&lt;hr style=&quot;box-sizing: content-box;height: 2px;margin: 16px 0px;border: 0px;padding: 0px;background-color: rgb(231, 231, 231)&quot;/&gt;&lt;h2 cid=&quot;n83&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.75em;position: relative;line-height: 1.225;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;5. 日常使用&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;figure class=&quot;md-table-fig table-figure&quot; cid=&quot;n84&quot; mdtype=&quot;table&quot; style=&quot;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;margin: 1.2em 0px;overflow-x: auto;max-width: calc(100% + 16px);padding: 0px;cursor: default;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;table class=&quot;md-table&quot; width=&quot;1140&quot;&gt;&lt;thead style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;background-color: rgb(248, 248, 248)&quot;&gt;&lt;tr cid=&quot;n85&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box;padding: 6px 13px;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: initial&quot;&gt;&lt;span cid=&quot;n86&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 253.641px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;快捷键&lt;/span&gt;&lt;/span&gt;&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box;padding: 6px 13px;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: initial&quot;&gt;&lt;span cid=&quot;n87&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 831.359px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;功能&lt;/span&gt;&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box&quot;&gt;&lt;tr cid=&quot;n88&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n89&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 253.641px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;Ctrl+Space&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n90&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 831.359px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;英文(keyboard-us)↔ 五笔拼音(wbpy)切换&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n91&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px;background-color: rgb(248, 248, 248)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n92&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 253.641px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;Super+Space&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n93&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 831.359px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;输入法组轮换&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n94&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n95&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 253.641px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;候选词窗&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n96&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 831.359px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;&amp;quot;Fcitx5 Input Window&amp;quot; 为打字必需的候选窗,非托盘&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;/p&gt;&lt;blockquote cid=&quot;n97&quot; mdtype=&quot;blockquote&quot; style=&quot;margin: 0.8em 0px;padding: 0px 15px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;border-left: 4px solid rgb(223, 226, 229);color: rgb(119, 119, 119);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;p cid=&quot;n98&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;若某个已打开的应用仍打不出中文:重启该应用即可(应用会重新连接 XIM/输入法服务),新打开的窗口不受影响。&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;box-sizing: content-box;height: 2px;margin: 16px 0px;border: 0px;padding: 0px;background-color: rgb(231, 231, 231)&quot;/&gt;&lt;h2 cid=&quot;n100&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.75em;position: relative;line-height: 1.225;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;6. 注意事项与坑(备忘)&lt;/span&gt;&lt;/h2&gt;&lt;ol start=&quot;&quot; cid=&quot;n101&quot; mdtype=&quot;list&quot; style=&quot;margin: 0.8em 0px;padding: 0px 0px 0px 30px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;position: relative;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p cid=&quot;n103&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;span style=&quot;box-sizing: border-box&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;不要在 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;unset DBUS_SESSION_BUS_ADDRESS&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 后单独启动 fcitx5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; —— 会导致桌面总线 D-Bus 自动激活第二个实例争抢 XIM(双实例坑),输入法失灵。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n105&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;取总线地址必须遍历所有 ukui-session 进程&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;:&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;pgrep -x ukui-session | head -n1&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 会命中&lt;/span&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;没有&lt;/span&gt; &lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;DBUS_SESSION_BUS_ADDRESS&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 的进程,导致取不到地址;等待循环超时后 fcitx5 又会在无总线状态下启动(坑会复发)。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n107&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;span style=&quot;box-sizing: border-box&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;DisabledAddons=notificationitem&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 在本 openEuler 5.1.12 构建中不生效&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(运行时仍加载 notificationitem 插件);托盘图标由该插件(SNI)提供,本机 SNI 未注册故实际无托盘图标。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n109&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;strong&quot; class=&quot;md-pair-s &quot; style=&quot;box-sizing: border-box&quot;&gt;&amp;quot;Fcitx5 Input Window&amp;quot; 是候选词窗口,不是托盘&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;,不要误当作托盘去禁用。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n111&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;诊断命令需要 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;DISPLAY=:1&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 和桌面 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;DBUS_SESSION_BUS_ADDRESS&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;,否则 fcitx5-remote/dbus-send 报 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;Failed to create dbus connection&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n113&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;窗口排查依赖 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;xwininfo&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(已安装:&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;dnf install -y xwininfo&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;);&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;fcitx5-diagnose&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt; 可检查插件与输入法配置。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p cid=&quot;n115&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p&quot; style=&quot;margin: 0px 0px 0.5rem;padding: 0px;box-sizing: border-box;line-height: inherit;orphans: 1;white-space: pre-wrap&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;默认输入法为五笔拼音 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;wbpy&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;(profile:&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;DefaultIM=wbpy&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;),码表位于 &lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;/usr/share/libime/wbpy.main.dict&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr style=&quot;box-sizing: content-box;height: 2px;margin: 16px 0px;border: 0px;padding: 0px;background-color: rgb(231, 231, 231)&quot;/&gt;&lt;h2 cid=&quot;n117&quot; mdtype=&quot;heading&quot; class=&quot;md-end-block md-heading&quot; style=&quot;margin: 1rem 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 1.75em;position: relative;line-height: 1.225;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;7. 附录:关键文件与常用诊断命令&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;figure class=&quot;md-table-fig table-figure&quot; cid=&quot;n118&quot; mdtype=&quot;table&quot; style=&quot;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box;margin: 1.2em 0px;overflow-x: auto;max-width: calc(100% + 16px);padding: 0px;cursor: default;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;table class=&quot;md-table&quot; width=&quot;1140&quot;&gt;&lt;thead style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;background-color: rgb(248, 248, 248)&quot;&gt;&lt;tr cid=&quot;n119&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box;padding: 6px 13px;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: initial&quot;&gt;&lt;span cid=&quot;n120&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 538.094px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;文件&lt;/span&gt;&lt;/span&gt;&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box;padding: 6px 13px;border-width: 1px 1px 0px;border-style: solid solid none;border-color: rgb(223, 226, 229) rgb(223, 226, 229) currentcolor;border-image: initial&quot;&gt;&lt;span cid=&quot;n121&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 546.906px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;作用&lt;/span&gt;&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box&quot;&gt;&lt;tr cid=&quot;n122&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n123&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 538.094px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;/root/.vnc/xstartup&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n124&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 546.906px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;VNC 会话启动脚本(等待会话总线 + 启动 fcitx5)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n125&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px;background-color: rgb(248, 248, 248)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n126&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 538.094px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;~/.config/fcitx5/config&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n127&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 546.906px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;fcitx5 全局配置(热键、&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;[Behavior]&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;、&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;DisabledAddons&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n128&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n129&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 538.094px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;~/.config/fcitx5/profile&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n130&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 546.906px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;输入法组与默认输入法(&lt;/span&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;DefaultIM=wbpy&lt;/code&gt;&lt;/span&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n131&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px;background-color: rgb(248, 248, 248)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n132&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 538.094px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;/usr/share/fcitx5/addon/notificationitem.conf&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n133&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 546.906px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;托盘(SNI)插件定义&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cid=&quot;n134&quot; mdtype=&quot;table_row&quot; style=&quot;box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);padding: 0px&quot;&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n135&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 538.094px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;code&quot; spellcheck=&quot;false&quot; style=&quot;box-sizing: border-box&quot;&gt;&lt;code style=&quot;box-sizing: border-box;font-family: &amp;#39;Lucida Console&amp;#39;, Consolas, Courier, monospace;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em&quot;&gt;/usr/share/libime/wbpy.main.dict&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;padding: 6px 13px;border-color: rgb(223, 226, 229);min-width: 32px&quot;&gt;&lt;span cid=&quot;n136&quot; mdtype=&quot;table_cell&quot; style=&quot;box-sizing: border-box;display: inline-block;min-width: 1ch;width: 546.906px;min-height: 10px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;五笔拼音码表&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;/p&gt;&lt;p cid=&quot;n137&quot; mdtype=&quot;paragraph&quot; class=&quot;md-end-block md-p md-focus&quot; style=&quot;margin: 0.8em 0px;padding: 0px;white-space: pre-wrap;background-color: rgb(255, 255, 255);box-sizing: border-box;line-height: inherit;orphans: 4;color: rgb(51, 51, 51);font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Clear Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, &amp;#39;Segoe UI Emoji&amp;#39;, &amp;#39;SF Pro&amp;#39;, sans-serif;font-size: 16px&quot;&gt;&lt;span md-inline=&quot;plain&quot; style=&quot;box-sizing: border-box&quot;&gt;常用诊断命令速查:&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;md-fences md-end-block ty-contain-cm modeLoaded&quot; spellcheck=&quot;false&quot; lang=&quot;bash&quot; cid=&quot;n138&quot; mdtype=&quot;fences&quot; style=&quot;box-sizing: border-box; overflow: visible; font-family: &amp;quot;Lucida Console&amp;quot;, Consolas, Courier, monospace; font-size: 0.9em; position: relative; break-inside: avoid; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; color: rgb(51, 51, 51);&quot;&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 进程 / 环境&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;ps&lt;/span&gt; aux | &lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-E&lt;/span&gt; &lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;fcitx|Xvnc&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;pgrep &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-x&lt;/span&gt; fcitx5&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;tr &lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;\0&amp;#39;&lt;/span&gt; &lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; &amp;lt; /proc/&amp;lt;fcitx5-pid&amp;gt;/environ | &lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-E&lt;/span&gt; &lt;span class=&quot;cm-string&quot; style=&quot;box-sizing: border-box; color: #AA1111;&quot;&gt;&amp;#39;DISPLAY|DBUS_SESSION_BUS_ADDRESS|XMODIFIERS&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span cm-text=&quot;&quot; cm-zwsp=&quot;&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 会话总线&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;pgrep &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-a&lt;/span&gt; dbus-daemon&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;ls&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-la&lt;/span&gt; /tmp/dbus-*&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span cm-text=&quot;&quot; cm-zwsp=&quot;&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 输入法诊断 / XIM / 运行时插件加载&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-def&quot; style=&quot;box-sizing: border-box; color: #0000FF;&quot;&gt;DISPLAY&lt;/span&gt;&lt;span class=&quot;cm-operator&quot; style=&quot;box-sizing: border-box; color: #981A1A;&quot;&gt;=&lt;/span&gt;:1 fcitx5-diagnose&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;xprop &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-root&lt;/span&gt; | &lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;grep&lt;/span&gt; XIM_SERVERS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 应含 @server=fcitx&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-builtin&quot; style=&quot;box-sizing: border-box; color: #3300AA;&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-c&lt;/span&gt; libnotificationitem /proc/&amp;lt;fcitx5-pid&amp;gt;/maps &amp;nbsp; &lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 0 = 插件未加载&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span cm-text=&quot;&quot; cm-zwsp=&quot;&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 切换测试(需先 export DISPLAY=:1 与桌面总线地址)&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;fcitx5-remote &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-s&lt;/span&gt; wbpy; fcitx5-remote &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-n&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 应输出 wbpy&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span role=&quot;presentation&quot; style=&quot;box-sizing: border-box; padding-right: 0.1px;&quot;&gt;fcitx5-remote &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-s&lt;/span&gt; keyboard-us; fcitx5-remote &lt;span class=&quot;cm-attribute&quot; style=&quot;box-sizing: border-box; color: #0000CC;&quot;&gt;-n&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;cm-comment&quot; style=&quot;box-sizing: border-box; color: #AA5500;&quot;&gt;# 应输出 keyboard-us&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Fri, 11 Sep 2026 17:25:19 +0800</pubDate></item><item><title>ELAN0618 触摸板 Windows Server 2019 修复,可正常驱动触控板操作。</title><link>https://www.yjlink.cc/?id=3570</link><description>&lt;h1 id=&quot;elan0618-触摸板-windows-server-2019-修复包&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 24px 0px 16px; padding: 0px; font-size: 32px; color: rgb(37, 43, 58); line-height: 32px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;ELAN0618 触摸板 Windows Server 2019 修复包&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;https://gitcode.com/micoder/ELAN0618_Touchpad&lt;/span&gt;&lt;/h1&gt;&lt;h2 id=&quot;问题&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E9%97%AE%E9%A2%98&quot; name=&quot;问题&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block; font-size: 16px; text-decoration: underline;&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block; font-size: 16px;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;问题&lt;/h2&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;Windows Server 2019 不内置 ELAN 触摸板驱动。ELAN SA469D-22HB (ACPI\ELAN0618) I2C 触摸板仅由通用 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;hidi2c&lt;/code&gt; 驱动驱动，无法响应触摸输入。&lt;/p&gt;&lt;h2 id=&quot;根因&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E6%A0%B9%E5%9B%A0&quot; name=&quot;根因&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;根因&lt;/h2&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;Server 2019 缺少 ELAN 专用驱动（ETD），通用 HID 驱动（mouhid）无法正确处理 ELAN 触摸板的 HID 报告。&lt;/p&gt;&lt;h2 id=&quot;修复原理&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E4%BF%AE%E5%A4%8D%E5%8E%9F%E7%90%86&quot; name=&quot;修复原理&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;修复原理&lt;/h2&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;从 Windows 10 ELAN 驱动包（Synaptics_Driver_Extract）移植 ETD 驱动，通过 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;InstallHinfSection&lt;/code&gt; API 强制安装为 HID 鼠标设备的上层过滤器。&lt;/p&gt;&lt;h2 id=&quot;使用方法&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95&quot; name=&quot;使用方法&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;使用方法&lt;/h2&gt;&lt;h3 id=&quot;方法一双击运行推荐&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E6%96%B9%E6%B3%95%E4%B8%80%E5%8F%8C%E5%87%BB%E8%BF%90%E8%A1%8C%E6%8E%A8%E8%8D%90&quot; name=&quot;方法一双击运行推荐&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;方法一：双击运行（推荐）&lt;/h3&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-text&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;右键 fix_elan_touchpad.bat → 以管理员身份运行&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h3 id=&quot;方法二powershell&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E6%96%B9%E6%B3%95%E4%BA%8Cpowershell&quot; name=&quot;方法二powershell&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;方法二：PowerShell&lt;/h3&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-powershell&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 以管理员身份运行 PowerShell&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;Set-ExecutionPolicy&lt;/span&gt; &lt;span class=&quot;hljs-literal&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #0086B3;&quot;&gt;-Scope&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #A71D5D;&quot;&gt;Process&lt;/span&gt; &lt;span class=&quot;hljs-literal&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #0086B3;&quot;&gt;-ExecutionPolicy&lt;/span&gt; Bypass&lt;br/&gt;.\fix_elan_touchpad.ps1&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h3 id=&quot;方法三手动安装&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E6%96%B9%E6%B3%95%E4%B8%89%E6%89%8B%E5%8A%A8%E5%AE%89%E8%A3%85&quot; name=&quot;方法三手动安装&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;方法三：手动安装&lt;/h3&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-cmd&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;rundll32 setupapi.dll,InstallHinfSection ETD_HID_Group6_WIN10_Inst.NT &lt;span class=&quot;hljs-number&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #0086B3;&quot;&gt;132&lt;/span&gt; &amp;quot;%~dp0ELAN_Driver\ETD.inf&amp;quot;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h2 id=&quot;修复后的设备状态&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E4%BF%AE%E5%A4%8D%E5%90%8E%E7%9A%84%E8%AE%BE%E5%A4%87%E7%8A%B6%E6%80%81&quot; name=&quot;修复后的设备状态&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;修复后的设备状态&lt;/h2&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;设备实例&lt;/th&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;驱动&lt;/th&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;ACPI\ELAN0618&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;hidi2c&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;I2C HID Miniport（保持不变）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;HID\ELAN0618&amp;amp;COL01&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;mouhid + &lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;ETD&lt;/span&gt;（上层过滤器）&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;ELAN 触摸板核心驱动&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;HID\ELAN0618&amp;amp;COL02&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;ETDHCF&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;ELAN HID 类过滤驱动&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;ETD 服务&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;RUNNING&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;ETD.sys 内核驱动&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;ETDService&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;RUNNING&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;触摸板应用服务&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 id=&quot;文件清单&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E6%96%87%E4%BB%B6%E6%B8%85%E5%8D%95&quot; name=&quot;文件清单&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;文件清单&lt;/h2&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-text&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;ELAN0618_Touchpad_WinSrv2019_Fix/&lt;br/&gt;├── fix_elan_touchpad.bat &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← 一键修复批处理（双击运行）&lt;br/&gt;├── fix_elan_touchpad.ps1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← PowerShell 修复脚本&lt;br/&gt;├── README.md &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← 本文档&lt;br/&gt;└── ELAN_Driver/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ← ELAN 驱动文件&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETD.inf &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← 触摸板驱动安装信息&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETD.sys &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← 触摸板内核驱动&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── etd.cat &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← ETD 数字签名&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETDHCF.inf &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ← HID 过滤驱动安装信息&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETDHCF.sys &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ← HID 过滤内核驱动&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── etdhcf.cat &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ← ETDHCF 数字签名&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETDService.exe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ← 应用服务&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETDCtrl.exe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← 控制程序&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETDCtrlHelper.exe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← 辅助程序&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETDApix.dll &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← API 扩展库&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETDCmds.dll &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← 命令库&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETDFavorite.dll &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← 收藏库&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETDTouch.exe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ← 触控程序&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── ETDUn_inst.exe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ← 卸载程序&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── LenovoAPI.dll &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← Lenovo 接口库&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── dpinst.exe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ← 驱动安装工具（备用）&lt;br/&gt; &amp;nbsp; &amp;nbsp;├── dpinst.xml &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ← DPInst 配置&lt;br/&gt; &amp;nbsp; &amp;nbsp;└── Setup.exe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;← 安装程序（备用）&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h2 id=&quot;目标设备兼容性&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E7%9B%AE%E6%A0%87%E8%AE%BE%E5%A4%87%E5%85%BC%E5%AE%B9%E6%80%A7&quot; name=&quot;目标设备兼容性&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;目标设备兼容性&lt;/h2&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;本驱动适用于以下 ELAN 触摸板型号：&lt;/p&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;设备 ID&lt;/th&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;HID\VEN_ELAN&amp;amp;DEV_0608&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;LCFC ideapad 320-14/15/17IKB&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;HID\VEN_ELAN&amp;amp;DEV_0611&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;LCFC ideapad 320&amp;amp;520IKBRA&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;HID\VEN_ELAN&amp;amp;DEV_0617&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;Wistron V530/V330/E53 (SKL)&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;HID\VEN_ELAN&amp;amp;DEV_0618&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;Wistron V530/V330/E53 (KBL)&lt;/span&gt; ← 本机&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;HID\VEN_ELAN&amp;amp;DEV_0619&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;Wistron V530/V330/E53 (AMD)&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;HID\VEN_ELAN&amp;amp;DEV_0623&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;Wistron V340/V140/E54&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;...&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;以及更多 (详见 ETD.inf)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 id=&quot;注意事项&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9&quot; name=&quot;注意事项&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;注意事项&lt;/h2&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;管理员权限&lt;/span&gt;：必须以管理员身份运行&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;驱动签名&lt;/span&gt;：所有文件已签名（etd.cat / etdhcf.cat），无需开启测试签名&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;重启&lt;/span&gt;：通常无需重启；如触摸板无响应，请重启系统&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;卸载&lt;/span&gt;：运行 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;ETDUn_inst.exe&lt;/code&gt; 或设备管理器中禁用 ETD 过滤器&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;修复过程中记录的系统修改&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E4%BF%AE%E5%A4%8D%E8%BF%87%E7%A8%8B%E4%B8%AD%E8%AE%B0%E5%BD%95%E7%9A%84%E7%B3%BB%E7%BB%9F%E4%BF%AE%E6%94%B9&quot; name=&quot;修复过程中记录的系统修改&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;修复过程中记录的系统修改&lt;/h2&gt;&lt;h3 id=&quot;修改的系统文件&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E4%BF%AE%E6%94%B9%E7%9A%84%E7%B3%BB%E7%BB%9F%E6%96%87%E4%BB%B6&quot; name=&quot;修改的系统文件&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;修改的系统文件&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;文件路径&lt;/th&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;C:\Windows\System32\drivers\ETD.sys&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;ETD 内核驱动（新增）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;C:\Windows\System32\drivers\ETDHCF.sys&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;ETDHCF 内核驱动（新增）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;C:\Windows\INF\oem37.inf&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;ETD.inf 的发布副本（驱动库自动生成）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;C:\Windows\INF\oem38.inf&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;ETDHCF.inf 的发布副本（驱动库自动生成）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id=&quot;修改的注册表项&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E4%BF%AE%E6%94%B9%E7%9A%84%E6%B3%A8%E5%86%8C%E8%A1%A8%E9%A1%B9&quot; name=&quot;修改的注册表项&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;修改的注册表项&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;注册表路径&lt;/th&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修改内容&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;HKLM\SYSTEM\CurrentControlSet\Services\ETD&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;ETD 服务注册&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;HKLM\SYSTEM\CurrentControlSet\Services\ETDService&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;ETDService 服务注册&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;HKLM\SYSTEM\CurrentControlSet\Enum\HID\ELAN0618&amp;amp;COL01\...\UpperFilters&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;添加 ETD 上层过滤器&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e96f-...}\00XX&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;ETD 类实例注册&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 id=&quot;未修改已还原&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E6%9C%AA%E4%BF%AE%E6%94%B9%E5%B7%B2%E8%BF%98%E5%8E%9F&quot; name=&quot;未修改已还原&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;未修改（已还原）&lt;/h3&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;修改项&lt;/th&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;状态&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;bcdedit /set testsigning on&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;已被 Secure Boot 自动重置为 Off&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;BTH\MS_BTHPAN&lt;/code&gt; 设备节点注册表&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;已还原为原始状态&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;Net 类实例 0017&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;已删除（手动绑定尝试，未成功）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;C:\Windows\INF\bthpan.sys&lt;/code&gt; 临时文件&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;已删除&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;system32\drivers\bthpan.sys&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;已还原为原始版本&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 id=&quot;环境&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 140px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ELAN0618_Touchpad/blob/main/README.md#%E7%8E%AF%E5%A2%83&quot; name=&quot;环境&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;环境&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;OS: Windows Server 2019 Datacenter Build 17763.9121&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;触摸板: ELAN SA469D-22HB (I2C HID, ACPI\ELAN0618)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;I2C 控制器: Intel Serial IO I2C Host Controller - 9D60&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 03 Sep 2026 11:52:13 +0800</pubDate></item><item><title>openEuler 25.09 升级内核至 kernel 7.2.0（源码编译安装）</title><link>https://www.yjlink.cc/?id=3569</link><description>&lt;h1 id=&quot;kernel720&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 24px 0px 16px; padding: 0px; font-size: 32px; color: rgb(37, 43, 58); line-height: 32px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;kernel7.2.0&lt;/h1&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;openEuler 25.09 升级内核至 kernel 7.2.0（源码编译安装）&lt;/p&gt;&lt;h2 id=&quot;环境信息&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#%E7%8E%AF%E5%A2%83%E4%BF%A1%E6%81%AF&quot; name=&quot;环境信息&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;环境信息&lt;/h2&gt;&lt;table&gt;&lt;thead style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;项目&lt;/th&gt;&lt;th style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;值&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;系统&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;openEuler 25.09 (x86_64)&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;原内核&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;7.1.2&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;目标内核&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;7.2.0&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;硬件&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 249, 251);&quot;&gt;6 核 CPU / 30Gi 内存 / 磁盘可用 134G&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;显卡&lt;/td&gt;&lt;td style=&quot;border-width: 0.8px; border-color: rgb(227, 227, 238); box-sizing: border-box; margin: 0px; padding: 6px 12px;&quot;&gt;NVIDIA GeForce GTX 750 (GM107)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 id=&quot;编译与安装过程&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#%E7%BC%96%E8%AF%91%E4%B8%8E%E5%AE%89%E8%A3%85%E8%BF%87%E7%A8%8B&quot; name=&quot;编译与安装过程&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;编译与安装过程&lt;/h2&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;解压源码&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;linux-7.2.tar.gz&lt;/code&gt;（约 260MB，解压后 1.8G）→ &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;linux-7.2/&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;内核配置&lt;/span&gt;：复用当前运行内核配置（&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;/proc/config.gz&lt;/code&gt;）→ &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;.config&lt;/code&gt;，再执行 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;make olddefconfig&lt;/code&gt; 适配 7.2&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;并发编译&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;make -j3&lt;/code&gt;（按需求限制并发为 3，防止系统死机；全量编译约 2.5 小时，产出 15000+ 目标文件）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;安装模块&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;make modules_install&lt;/code&gt; → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;/lib/modules/7.2.0&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;安装内核&lt;/span&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;make install&lt;/code&gt; → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;/boot/vmlinuz-7.2.0&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;System.map-7.2.0&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;initramfs-7.2.0.img&lt;/code&gt;（dracut 生成）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bolder;&quot;&gt;更新引导&lt;/span&gt;：grub 自动生成 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;openEuler (7.2.0) 25.09&lt;/code&gt; 菜单项，并通过 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;grub2-set-default&lt;/code&gt; 将默认启动项切换为 7.2.0&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 id=&quot;安装结果验证&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#%E5%AE%89%E8%A3%85%E7%BB%93%E6%9E%9C%E9%AA%8C%E8%AF%81&quot; name=&quot;安装结果验证&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;安装结果验证&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;/boot/vmlinuz-7.2.0&lt;/code&gt;（13.8MB）、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;System.map-7.2.0&lt;/code&gt;、&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;initramfs-7.2.0.img&lt;/code&gt; 均已生成&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;/lib/modules/7.2.0&lt;/code&gt; 模块目录完整&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;grub 默认项：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;saved_entry=openEuler (7.2.0) 25.09&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;nvidia-闭源驱动适配58015904&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#nvidia-%E9%97%AD%E6%BA%90%E9%A9%B1%E5%8A%A8%E9%80%82%E9%85%8D58015904&quot; name=&quot;nvidia-闭源驱动适配58015904&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;NVIDIA 闭源驱动适配（580.159.04）&lt;/h2&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;内核源码不包含 NVIDIA 闭源驱动（仅含开源 amdgpu/i915/nouveau，且 nouveau 被系统 blacklist）。为使 7.2.0 重启后显卡可用，通过 DKMS 为 7.2.0 重新编译安装闭源驱动 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;nvidia/580.159.04&lt;/code&gt;，过程中修复了 3 类内核 7.2 兼容问题：&lt;/p&gt;&lt;h3 id=&quot;1-strncpy-被内核-72-彻底移除&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#1-strncpy-%E8%A2%AB%E5%86%85%E6%A0%B8-72-%E5%BD%BB%E5%BA%95%E7%A7%BB%E9%99%A4&quot; name=&quot;1-strncpy-被内核-72-彻底移除&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;1. &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;strncpy&lt;/code&gt; 被内核 7.2 彻底移除&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;内核 7.2 的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;lib/string.c&lt;/code&gt; 已无 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;strncpy&lt;/code&gt; 实现，驱动直接调用会报&amp;quot;隐式声明&amp;quot;错误。将驱动 4 个文件中 7 处 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;strncpy&lt;/code&gt; 替换为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;strscpy&lt;/code&gt;：&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;nvidia/os-interface.c&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;nvidia/linux_nvswitch.c&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;nvidia-modeset/nvidia-modeset-linux.c&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;nvidia-uvm/uvm_pmm_gpu.c&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;2-drm-atomic-api-重构drm_atomic_state-drm_atomic_commit&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#2-drm-atomic-api-%E9%87%8D%E6%9E%84drm_atomic_state-drm_atomic_commit&quot; name=&quot;2-drm-atomic-api-重构drm_atomic_state-drm_atomic_commit&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;2. DRM atomic API 重构（&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;drm_atomic_state&lt;/code&gt; → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;drm_atomic_commit&lt;/code&gt;）&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;内核 7.2 彻底移除了 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;struct drm_atomic_state&lt;/code&gt; 类型，重构为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;struct drm_atomic_commit&lt;/code&gt;，相关 API 同步改名。对 nvidia-drm 模块做批量适配：&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;类型替换：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;struct drm_atomic_state&lt;/code&gt; → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;struct drm_atomic_commit&lt;/code&gt;（约 22 处，5 个源文件）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;函数改名：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;drm_atomic_state_alloc/put/init/default_clear/default_release&lt;/code&gt; → 对应 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;drm_atomic_commit_*&lt;/code&gt;（8 处）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;注意保留驱动自有函数 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;nv_drm_atomic_state_*&lt;/code&gt; 不被误改（用词边界正则）&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;3-conftestsh-签名检测过时&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#3-conftestsh-%E7%AD%BE%E5%90%8D%E6%A3%80%E6%B5%8B%E8%BF%87%E6%97%B6&quot; name=&quot;3-conftestsh-签名检测过时&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;3. conftest.sh 签名检测过时&lt;/h3&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;驱动构建时通过 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;conftest.sh&lt;/code&gt; 检测内核 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;atomic_check&lt;/code&gt; 回调签名以选择代码分支，但检测代码仍使用旧类型 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;struct drm_atomic_state&lt;/code&gt;，在 7.2 内核下检测失败导致走错分支。将两处检测函数参数改为 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;struct drm_atomic_commit *state&lt;/code&gt; 后恢复正常。&lt;/p&gt;&lt;h3 id=&quot;并发限制&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#%E5%B9%B6%E5%8F%91%E9%99%90%E5%88%B6&quot; name=&quot;并发限制&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;并发限制&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;/usr/src/nvidia-580.159.04/dkms.conf&lt;/code&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;-j6&lt;/code&gt; → &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;-j3&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;/etc/dkms/framework.conf&lt;/code&gt;：&lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;parallel_jobs=3&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;驱动安装验证&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 20px; color: rgb(37, 43, 58); line-height: 28px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85%E9%AA%8C%E8%AF%81&quot; name=&quot;驱动安装验证&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;驱动安装验证&lt;/h3&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-text&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;$ dkms status&lt;br/&gt;nvidia/580.159.04, 7.1.2, x86_64: installed&lt;br/&gt;nvidia/580.159.04, 7.2.0, x86_64: installed&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;DKMS 退出码 0；5 个模块（nvidia / nvidia-uvm / nvidia-modeset / nvidia-drm / nvidia-peermem）已装入 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;/lib/modules/7.2.0/kernel/drivers/video/&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;initramfs 已重建并包含 nvidia 模块加载配置&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;重启后验证命令&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#%E9%87%8D%E5%90%AF%E5%90%8E%E9%AA%8C%E8%AF%81%E5%91%BD%E4%BB%A4&quot; name=&quot;重启后验证命令&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;重启后验证命令&lt;/h2&gt;&lt;div class=&quot;md-render-pre-wrapper&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; position: relative; color: rgb(37, 43, 58); font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;pre data-copy-enhanced=&quot;1&quot; class=&quot;md-render-pre&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 12px 0px 24px; padding: 16px; font-feature-settings: normal; font-size: 0.875em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 6px; line-height: 1.5; overflow-x: auto; position: relative;&quot;&gt;&lt;code class=&quot;language-bash&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 8px 32px 8px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: inherit; font-variation-settings: normal; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 6px; display: block;&quot;&gt;&lt;span class=&quot;hljs-built_in&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #183691;&quot;&gt;uname&lt;/span&gt; -r &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 应为 7.2.0&lt;/span&gt;&lt;br/&gt;lsmod | grep nvidia &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 应有 nvidia、nvidia_drm 等&lt;/span&gt;&lt;br/&gt;nvidia-smi &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: #9C9DB4;&quot;&gt;# 应正常显示 GTX 750&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; class=&quot;md-render-copy-btn&quot; aria-label=&quot;copy code&quot; title=&quot;Copy&quot; style=&quot;border-width: 0px; border-style: none; border-color: currentcolor; margin: 0px; padding: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 0px; color: rgb(59, 62, 85); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: 1; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; opacity: 1; appearance: inherit; overflow: visible; cursor: pointer; outline: 0px; align-items: center; display: inline-flex; height: 16px; justify-content: center; position: absolute; right: 8px; top: 11px; width: 16px;&quot;&gt;&lt;svg class=&quot;md-render-copy-btn__icon&quot; aria-hidden=&quot;true&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&lt;use href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;h2 id=&quot;回滚方案&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#%E5%9B%9E%E6%BB%9A%E6%96%B9%E6%A1%88&quot; name=&quot;回滚方案&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;回滚方案&lt;/h2&gt;&lt;p style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; color: rgb(37, 43, 58); line-height: 26px; overflow: hidden; word-break: break-word; font-family: EnglishOnly, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);&quot;&gt;grub 菜单保留旧内核项 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;openEuler (7.1.2) 25.09&lt;/code&gt;。若 7.2.0 异常，可在开机菜单选择旧内核启动；或执行 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;grub2-set-default &amp;#39;openEuler (7.1.2) 25.09&amp;#39;&lt;/code&gt; 恢复默认。&lt;/p&gt;&lt;h2 id=&quot;备注&quot; style=&quot;white-space: normal; border: 0px solid; box-sizing: border-box; margin: 0.67em 0px; padding: 0px; font-size: 24px; color: rgb(37, 43, 58); line-height: 30px; position: relative; scroll-margin-top: 173px; font-family: EnglishOnly, sans-serif; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/kernel7.2.0#%E5%A4%87%E6%B3%A8&quot; name=&quot;备注&quot; rel=&quot;nofollow&quot; class=&quot;header-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; color: rgb(41, 81, 224); background-color: transparent; text-underline-offset: 3px; cursor: pointer; left: -24px; position: absolute; width: 24px;&quot;&gt;&lt;span class=&quot;gitcode-anchor&quot; style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0px; pointer-events: none; visibility: hidden; display: inline-block;&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;备注&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;源码目录中的 &lt;code style=&quot;border: 0px solid; box-sizing: border-box; margin: 0px; padding: 0.2em 0.4em; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-feature-settings: normal; font-size: 0.9em; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); border-radius: 4px;&quot;&gt;kernel-install.sh&lt;/code&gt; 为编译安装流水线脚本（等待编译→安装模块→安装内核），可删除&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;全部编译安装操作并发均 ≤ 3，避免系统负载过高死机&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 01 Sep 2026 10:39:27 +0800</pubDate></item><item><title>ly_ueditor_plus 粘贴换行丢失修复总结报告</title><link>https://www.yjlink.cc/?id=3568</link><description>&lt;h1 id=&quot;ly_ueditor_plus-粘贴换行丢失修复总结报告&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 32px;margin: 24px 0px 16px;position: static;color: rgb(37, 43, 58);line-height: 32px;font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;ly_ueditor_plus 粘贴换行丢失修复总结报告&lt;/h1&gt;&lt;blockquote style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px 0px 0px 4px;border-style: solid;border-color: rgb(229, 231, 235) rgb(229, 231, 235) rgb(229, 231, 235) rgb(227, 227, 238);margin: 0px 0px 24px;padding: 0px 16px;color: rgb(59, 62, 85);overflow: auto;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;&lt;p style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);padding: 0px;overflow-wrap: break-word;line-height: 22px;overflow: hidden;font-size: 14px&quot;&gt;zblog-php版本使用 ly_ueditor_plus编辑器插件，复制的文章内容不支持自动换行解决方法。 针对「从网上复制文章/终端内容，粘贴进 UEditorPlus 编辑器后换行丢失、代码黏成一行」问题的完整分析、修复与验证记录。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: medium medium 0.8px;border-style: none none solid;border-color: currentcolor currentcolor rgb(227, 227, 238);height: 0px;overflow: visible;margin: 24px 0px;border-image: none;color: inherit;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;/&gt;&lt;h2 id=&quot;一、问题现象&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 24px;margin: 0.67em 0px;line-height: 30px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E4%B8%80%E9%97%AE%E9%A2%98%E7%8E%B0%E8%B1%A1&quot; name=&quot;一问题现象&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;一、问题现象&lt;/h2&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;在 UEditorPlus（v2.0.0）编辑器里粘贴以下内容时，换行全部丢失，所有代码黏成一行：&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;从网页复制的代码块（&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; / &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&lt;/code&gt; / &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;span class=&amp;quot;token …&amp;quot;&amp;gt;&lt;/code&gt; 高亮结构）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;从终端 / 纯文本文件复制的多行命令脚本（&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;#&lt;/code&gt; 注释、&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\&lt;/code&gt; 续行、空行）&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;典型表现：&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;…libfastjson# &amp;nbsp; &amp;nbsp;（关键：…&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;/root/rpmbuild/RPMS/x86_64rpm -Uvh …&lt;/code&gt; 直接粘连。&lt;/p&gt;&lt;hr style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: medium medium 0.8px;border-style: none none solid;border-color: currentcolor currentcolor rgb(227, 227, 238);height: 0px;overflow: visible;margin: 24px 0px;border-image: none;color: inherit;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;/&gt;&lt;h2 id=&quot;二、根因分析（三层叠加，缺一不可）&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 24px;margin: 0.67em 0px;line-height: 30px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E4%BA%8C%E6%A0%B9%E5%9B%A0%E5%88%86%E6%9E%90%E4%B8%89%E5%B1%82%E5%8F%A0%E5%8A%A0%E7%BC%BA%E4%B8%80%E4%B8%8D%E5%8F%AF&quot; name=&quot;二根因分析三层叠加缺一不可&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;二、根因分析（三层叠加，缺一不可）&lt;/h2&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;粘贴管线（&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;UE.plugins.paste&lt;/code&gt;）处理顺序为：&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; margin: 0px 0px 24px; color: rgb(37, 43, 58); background-color: rgb(241, 241, 248); padding: 16px 28px 16px 16px; position: relative; overflow-x: auto; scrollbar-width: thin; line-height: 22px;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); padding: 2px 6px; display: block; overflow-x: auto; line-height: 22px; border-radius: 6px;&quot;&gt;pastebin innerHTML → UE.filterWord → 换行转换(本次新增) → UE.htmlparser → filterInputRule → insertHtml&lt;br/&gt;&lt;/code&gt;&lt;button title=&quot;copy&quot; class=&quot;copy_btn md-view-copy-icon&quot; style=&quot;--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: medium; border-style: none; border-color: currentcolor; font-family: inherit; font-size: 14px; line-height: inherit; margin: 0px; overflow: visible; appearance: button; padding: 0px; background-image: none; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; cursor: pointer; outline: 0px; font-feature-settings: inherit; font-variation-settings: inherit; font-weight: inherit; letter-spacing: inherit; position: absolute; right: 8px; top: 11px;&quot;&gt;&lt;svg pointer-events=&quot;none&quot; class=&quot;icon text-[var(--devui-aide-text)]&quot; aria-hidden=&quot;true&quot; style=&quot;font-size:16px;display: inline-block;&quot;&gt;&lt;use xlink:href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/pre&gt;&lt;h3 id=&quot;根因-1：uefilterword-折叠全量换行&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 20px;margin: 0.67em 0px;line-height: 28px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E6%A0%B9%E5%9B%A0-1uefilterword-%E6%8A%98%E5%8F%A0%E5%85%A8%E9%87%8F%E6%8D%A2%E8%A1%8C&quot; name=&quot;根因-1uefilterword-折叠全量换行&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;根因 1：&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 22px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;UE.filterWord&lt;/code&gt; 折叠全量换行&lt;/h3&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;filterWord&lt;/code&gt; 内部 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;t()&lt;/code&gt; 函数第一行执行 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;.replace(/[\t\r\n]+/g,&amp;quot; &amp;quot;)&lt;/code&gt;，会把**整段 HTML（含 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 内部）**的换行/制表符折叠成空格。&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;触发条件：内容匹配 Word 特征（&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;class=&amp;quot;?Mso&lt;/code&gt; / &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;mso-&lt;/code&gt; 样式 / &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;w:WordDocument&lt;/code&gt; / &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;lang=&lt;/code&gt; 等），带 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;lang=&lt;/code&gt; 属性的网页很常见；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;原代码无任何 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 保护，代码块换行被无差别压平。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;根因-2：纯文本粘贴的-n-无换行渲染&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 20px;margin: 0.67em 0px;line-height: 28px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E6%A0%B9%E5%9B%A0-2%E7%BA%AF%E6%96%87%E6%9C%AC%E7%B2%98%E8%B4%B4%E7%9A%84-n-%E6%97%A0%E6%8D%A2%E8%A1%8C%E6%B8%B2%E6%9F%93&quot; name=&quot;根因-2纯文本粘贴的-n-无换行渲染&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;根因 2：纯文本粘贴的 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 22px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n&lt;/code&gt; 无换行渲染&lt;/h3&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;从终端/文本文件复制时，剪贴板只有 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;text/plain&lt;/code&gt;。Chrome 将多行内容作为&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;font-weight: 700&quot;&gt;单个含 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n&lt;/code&gt; 的文本节点&lt;/span&gt;插入编辑器，而正文 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;white-space: normal&lt;/code&gt; 会把文本节点里的 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n&lt;/code&gt; 渲染折叠成空格 → 视觉上一行。&lt;/p&gt;&lt;h3 id=&quot;根因-3：uehtmlparser-剥除标签相邻换行（最终真凶）&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 20px;margin: 0.67em 0px;line-height: 28px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E6%A0%B9%E5%9B%A0-3uehtmlparser-%E5%89%A5%E9%99%A4%E6%A0%87%E7%AD%BE%E7%9B%B8%E9%82%BB%E6%8D%A2%E8%A1%8C%E6%9C%80%E7%BB%88%E7%9C%9F%E5%87%B6&quot; name=&quot;根因-3uehtmlparser-剥除标签相邻换行最终真凶&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;根因 3：&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 22px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;UE.htmlparser&lt;/code&gt; 剥除标签相邻换行（最终真凶）&lt;/h3&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;网页代码块普遍是 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&amp;lt;span class=&amp;quot;token …&amp;quot;&amp;gt;行内容&amp;lt;/span&amp;gt;\n…&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/code&gt; 结构，换行符其实都在。但 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;htmlparser&lt;/code&gt; 的空白清理正则&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; margin: 0px 0px 24px; color: rgb(37, 43, 58); background-color: rgb(241, 241, 248); padding: 16px 28px 16px 16px; position: relative; overflow-x: auto; scrollbar-width: thin; line-height: 22px;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); padding: 2px 6px; display: block; overflow-x: auto; line-height: 22px; border-radius: 6px;&quot;&gt;[\r\t\n ]*&amp;lt;/?(\w+)…&amp;gt;[ \t\r\n]*&lt;br/&gt;&lt;/code&gt;&lt;button title=&quot;copy&quot; class=&quot;copy_btn md-view-copy-icon&quot; style=&quot;--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: medium; border-style: none; border-color: currentcolor; font-family: inherit; font-size: 14px; line-height: inherit; margin: 0px; overflow: visible; appearance: button; padding: 0px; background-image: none; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; cursor: pointer; outline: 0px; font-feature-settings: inherit; font-variation-settings: inherit; font-weight: inherit; letter-spacing: inherit; position: absolute; right: 8px; top: 11px;&quot;&gt;&lt;svg pointer-events=&quot;none&quot; class=&quot;icon text-[var(--devui-aide-text)]&quot; aria-hidden=&quot;true&quot; style=&quot;font-size:16px;display: inline-block;&quot;&gt;&lt;use xlink:href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/pre&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;会把 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;span&lt;/code&gt;/&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;code&lt;/code&gt;/&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;pre&lt;/code&gt;/&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;br&lt;/code&gt; 等白名单标签&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;font-weight: 700&quot;&gt;两侧的 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n\r&lt;/code&gt; 全部剥掉&lt;/span&gt;（&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;/span&amp;gt;\n&amp;lt;span&amp;gt;&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;/code&amp;gt;\n&lt;/code&gt; 等位置的换行被吞），且此清理发生在解析阶段，后续任何处理都无法找回。&lt;/p&gt;&lt;blockquote style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px 0px 0px 4px;border-style: solid;border-color: rgb(229, 231, 235) rgb(229, 231, 235) rgb(229, 231, 235) rgb(227, 227, 238);margin: 0px 0px 24px;padding: 0px 16px;color: rgb(59, 62, 85);overflow: auto;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;&lt;p style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);padding: 0px;overflow-wrap: break-word;line-height: 22px;overflow: hidden;font-size: 14px&quot;&gt;三者关系：修复 1 只管 Word 样式内容；修复 2 覆盖纯文本；但&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;font-weight: 700&quot;&gt;即使前两者都通过，只要换行以 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n&lt;/code&gt; 形式进入 htmlparser 且紧贴 span/code 标签，仍会被根因 3 剥除&lt;/span&gt;——这正是历次修复后线上仍失败的原因。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: medium medium 0.8px;border-style: none none solid;border-color: currentcolor currentcolor rgb(227, 227, 238);height: 0px;overflow: visible;margin: 24px 0px;border-image: none;color: inherit;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;/&gt;&lt;h2 id=&quot;三、修复方案（ueditor-plusueditoralljs-粘贴插件，共-4-处）&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 24px;margin: 0.67em 0px;line-height: 30px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E4%B8%89%E4%BF%AE%E5%A4%8D%E6%96%B9%E6%A1%88ueditor-plusueditoralljs-%E7%B2%98%E8%B4%B4%E6%8F%92%E4%BB%B6%E5%85%B1-4-%E5%A4%84&quot; name=&quot;三修复方案ueditor-plusueditoralljs-粘贴插件共-4-处&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;三、修复方案（&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;ueditor-plus/ueditor.all.js&lt;/code&gt; 粘贴插件，共 4 处）&lt;/h2&gt;&lt;h3 id=&quot;修复-a：filterword-保护--块&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 20px;margin: 0.67em 0px;line-height: 28px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E4%BF%AE%E5%A4%8D-afilterword-%E4%BF%9D%E6%8A%A4-pre-%E5%9D%97&quot; name=&quot;修复-afilterword-保护-pre-块&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;修复 A：&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 22px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;filterWord&lt;/code&gt; 保护 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 22px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 块&lt;/h3&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;UE.filterWord&lt;/code&gt; 内部 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;t()&lt;/code&gt; 函数开头摘出所有 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;pre&amp;gt;…&amp;lt;/pre&amp;gt;&lt;/code&gt; 块（占位符 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\u0000UEPRE{n}\u0000&lt;/code&gt;），完成 Word 清理链后再原样还原：&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; margin: 0px 0px 24px; color: rgb(37, 43, 58); background-color: rgb(241, 241, 248); padding: 16px 28px 16px 16px; position: relative; overflow-x: auto; scrollbar-width: thin; line-height: 22px;&quot;&gt;&lt;code class=&quot;language-js&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); padding: 2px 6px; display: block; overflow-x: auto; line-height: 22px; border-radius: 6px;&quot;&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;t&lt;/span&gt;(&lt;span class=&quot;hljs-params&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; line-height: 1.5;&quot;&gt;t&lt;/span&gt;){&lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;var&lt;/span&gt; a=[];&lt;br/&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;return&lt;/span&gt; t=t.&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/&amp;lt;pre[\s\S]*?&amp;lt;\/pre&amp;gt;/gi&lt;/span&gt;,&lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;function&lt;/span&gt;(&lt;span class=&quot;hljs-params&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; line-height: 1.5;&quot;&gt;e&lt;/span&gt;){&lt;br/&gt; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;return&lt;/span&gt; a.&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;push&lt;/span&gt;(e),&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;&amp;quot;\u0000UEPRE&amp;quot;&lt;/span&gt;+(a.&lt;span class=&quot;hljs-property&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; line-height: 1.5;&quot;&gt;length&lt;/span&gt;-&lt;span class=&quot;hljs-number&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #0086B3; line-height: 1.5;&quot;&gt;1&lt;/span&gt;)+&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;&amp;quot;\u0000&amp;quot;&lt;/span&gt;&lt;br/&gt;}), t.&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/[\t\r\n]+/g&lt;/span&gt;,&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;) &lt;span class=&quot;hljs-comment&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #9C9DB4; font-style: italic; line-height: 1.5;&quot;&gt;/* …原 Word 清理链… */&lt;/span&gt;&lt;br/&gt; &amp;nbsp;.&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/\u0000UEPRE(\d+)\u0000/g&lt;/span&gt;,&lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;function&lt;/span&gt;(&lt;span class=&quot;hljs-params&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; line-height: 1.5;&quot;&gt;e,i&lt;/span&gt;){&lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;return&lt;/span&gt; a[i]});&lt;br/&gt;}&lt;br/&gt;&lt;/code&gt;&lt;button title=&quot;copy&quot; class=&quot;copy_btn md-view-copy-icon&quot; style=&quot;--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: medium; border-style: none; border-color: currentcolor; font-family: inherit; font-size: 14px; line-height: inherit; margin: 0px; overflow: visible; appearance: button; padding: 0px; background-image: none; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; cursor: pointer; outline: 0px; font-feature-settings: inherit; font-variation-settings: inherit; font-weight: inherit; letter-spacing: inherit; position: absolute; right: 8px; top: 11px;&quot;&gt;&lt;svg pointer-events=&quot;none&quot; class=&quot;icon text-[var(--devui-aide-text)]&quot; aria-hidden=&quot;true&quot; style=&quot;font-size:16px;display: inline-block;&quot;&gt;&lt;use xlink:href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/pre&gt;&lt;h3 id=&quot;修复-b：粘贴时读取剪贴板-textplain-回退恢复&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 20px;margin: 0.67em 0px;line-height: 28px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E4%BF%AE%E5%A4%8D-b%E7%B2%98%E8%B4%B4%E6%97%B6%E8%AF%BB%E5%8F%96%E5%89%AA%E8%B4%B4%E6%9D%BF-textplain-%E5%9B%9E%E9%80%80%E6%81%A2%E5%A4%8D&quot; name=&quot;修复-b粘贴时读取剪贴板-textplain-回退恢复&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;修复 B：粘贴时读取剪贴板 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 22px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;text/plain&lt;/code&gt; 回退恢复&lt;/h3&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;来源网页若连 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n&lt;/code&gt; 都不给（行间无换行符渲染），HTML 已无法自愈。修复在粘贴事件里读取 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;clipboardData.getData(&amp;quot;text/plain&amp;quot;)&lt;/code&gt;（纯文本永远带换行），当 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 内换行数明显少于纯文本行数、且两者去空白后内容一致时，用纯文本按行重建 pre：&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; margin: 0px 0px 24px; color: rgb(37, 43, 58); background-color: rgb(241, 241, 248); padding: 16px 28px 16px 16px; position: relative; overflow-x: auto; scrollbar-width: thin; line-height: 22px;&quot;&gt;&lt;code class=&quot;language-js&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); padding: 2px 6px; display: block; overflow-x: auto; line-height: 22px; border-radius: 6px;&quot;&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #9C9DB4; font-style: italic; line-height: 1.5;&quot;&gt;// 事件监听处&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;i&lt;/span&gt;(e, t.&lt;span class=&quot;hljs-property&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; line-height: 1.5;&quot;&gt;clipboardData&lt;/span&gt; &amp;amp;&amp;amp; t.&lt;span class=&quot;hljs-property&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; line-height: 1.5;&quot;&gt;clipboardData&lt;/span&gt;.&lt;span class=&quot;hljs-property&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; line-height: 1.5;&quot;&gt;getData&lt;/span&gt; ? t.&lt;span class=&quot;hljs-property&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; line-height: 1.5;&quot;&gt;clipboardData&lt;/span&gt;.&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;getData&lt;/span&gt;(&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;&amp;quot;text/plain&amp;quot;&lt;/span&gt;) : &lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;)&lt;br/&gt;&lt;span class=&quot;hljs-comment&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #9C9DB4; font-style: italic; line-height: 1.5;&quot;&gt;// i(e,p) 内:恢复逻辑(实体解码、空白不敏感匹配、$1/$&amp;amp; 替换符用函数回调防吞)&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;button title=&quot;copy&quot; class=&quot;copy_btn md-view-copy-icon&quot; style=&quot;--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: medium; border-style: none; border-color: currentcolor; font-family: inherit; font-size: 14px; line-height: inherit; margin: 0px; overflow: visible; appearance: button; padding: 0px; background-image: none; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; cursor: pointer; outline: 0px; font-feature-settings: inherit; font-variation-settings: inherit; font-weight: inherit; letter-spacing: inherit; position: absolute; right: 8px; top: 11px;&quot;&gt;&lt;svg pointer-events=&quot;none&quot; class=&quot;icon text-[var(--devui-aide-text)]&quot; aria-hidden=&quot;true&quot; style=&quot;font-size:16px;display: inline-block;&quot;&gt;&lt;use xlink:href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/pre&gt;&lt;h3 id=&quot;修复-c：-内-n-直接转为-（关键）&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 20px;margin: 0.67em 0px;line-height: 28px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E4%BF%AE%E5%A4%8D-cpre-%E5%86%85-n-%E7%9B%B4%E6%8E%A5%E8%BD%AC%E4%B8%BA-br%E5%85%B3%E9%94%AE&quot; name=&quot;修复-cpre-内-n-直接转为-br关键&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;修复 C：&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 22px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 内 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 22px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n&lt;/code&gt; 直接转为 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 22px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;br/&amp;gt;&lt;/code&gt;（关键）&lt;/h3&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;把换行转换中的 pre 处理从「占位保护再还原」改为直接替换，&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;font-weight: 700&quot;&gt;让 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n&lt;/code&gt; 根本不出现在 htmlparser 输入里&lt;/span&gt;，从而根除根因 3：&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; margin: 0px 0px 24px; color: rgb(37, 43, 58); background-color: rgb(241, 241, 248); padding: 16px 28px 16px 16px; position: relative; overflow-x: auto; scrollbar-width: thin; line-height: 22px;&quot;&gt;&lt;code class=&quot;language-js&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); padding: 2px 6px; display: block; overflow-x: auto; line-height: 22px; border-radius: 6px;&quot;&gt;i = i.&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/\r\n?/g&lt;/span&gt;,&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;)&lt;br/&gt; &amp;nbsp; &amp;nbsp; .&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/&amp;lt;pre[\s\S]*?&amp;lt;\/pre&amp;gt;/gi&lt;/span&gt;, &lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;function&lt;/span&gt;(&lt;span class=&quot;hljs-params&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; line-height: 1.5;&quot;&gt;e&lt;/span&gt;){ &lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;return&lt;/span&gt; e.&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/\n/g&lt;/span&gt;,&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;&amp;quot;&amp;lt;br/&amp;gt;&amp;quot;&lt;/span&gt;); }) &lt;span class=&quot;hljs-comment&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #9C9DB4; font-style: italic; line-height: 1.5;&quot;&gt;// pre 内 \n→&amp;lt;br/&amp;gt;&lt;/span&gt;&lt;br/&gt; &amp;nbsp; &amp;nbsp; .&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/&amp;lt;[^&amp;gt;]*&amp;gt;/g&lt;/span&gt;, &lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;function&lt;/span&gt;(&lt;span class=&quot;hljs-params&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; line-height: 1.5;&quot;&gt;e&lt;/span&gt;){ &lt;span class=&quot;hljs-keyword&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #A71D5D; font-weight: 700; line-height: 1.5;&quot;&gt;return&lt;/span&gt; e.&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/\n/g&lt;/span&gt;,&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;&amp;quot;\u0002&amp;quot;&lt;/span&gt;); }) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;hljs-comment&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #9C9DB4; font-style: italic; line-height: 1.5;&quot;&gt;// 标签内换行安全清理&lt;/span&gt;&lt;br/&gt; &amp;nbsp; &amp;nbsp; .&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/([^&amp;lt;&amp;gt;\u0001\u0002])(\n+)(?=[^&amp;lt;&amp;gt;\u0001\u0002])/g&lt;/span&gt;, &lt;span class=&quot;hljs-comment&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #9C9DB4; font-style: italic; line-height: 1.5;&quot;&gt;/*文本内换行→等量&amp;lt;br/&amp;gt;*/&lt;/span&gt;)&lt;br/&gt; &amp;nbsp; &amp;nbsp; .&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/\n/g&lt;/span&gt;,&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;).&lt;span class=&quot;hljs-title function_&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #795DA3; font-weight: 700; line-height: 1.5;&quot;&gt;replace&lt;/span&gt;(&lt;span class=&quot;hljs-regexp&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;/\u0002/g&lt;/span&gt;,&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #000000; line-height: 1.5;&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;hljs-comment&quot; style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: #E5E7EB; color: #9C9DB4; font-style: italic; line-height: 1.5;&quot;&gt;// 标签间残留清理&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;button title=&quot;copy&quot; class=&quot;copy_btn md-view-copy-icon&quot; style=&quot;--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: medium; border-style: none; border-color: currentcolor; font-family: inherit; font-size: 14px; line-height: inherit; margin: 0px; overflow: visible; appearance: button; padding: 0px; background-image: none; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; cursor: pointer; outline: 0px; font-feature-settings: inherit; font-variation-settings: inherit; font-weight: inherit; letter-spacing: inherit; position: absolute; right: 8px; top: 11px;&quot;&gt;&lt;svg pointer-events=&quot;none&quot; class=&quot;icon text-[var(--devui-aide-text)]&quot; aria-hidden=&quot;true&quot; style=&quot;font-size:16px;display: inline-block;&quot;&gt;&lt;use xlink:href=&quot;#gt-line-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/pre&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;br/&amp;gt;&lt;/code&gt; 是 UEditor 代码块的天然换行格式（自带「插入代码」功能即以此存储），htmlparser 不再有 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n&lt;/code&gt; 可剥。&lt;/p&gt;&lt;h3 id=&quot;修复-d：纯文本（无-pre）换行-→-&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 20px;margin: 0.67em 0px;line-height: 28px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E4%BF%AE%E5%A4%8D-d%E7%BA%AF%E6%96%87%E6%9C%AC%E6%97%A0-pre%E6%8D%A2%E8%A1%8C--br&quot; name=&quot;修复-d纯文本无-pre换行--br&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;修复 D：纯文本（无 pre）换行 → &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 22px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;/h3&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;修复 C 中第三段正则同时覆盖普通文本节点：&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;line1\nline2&lt;/code&gt; → &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;line1&amp;lt;br/&amp;gt;line2&lt;/code&gt;，空行 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n\n&lt;/code&gt; → 双 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;br/&amp;gt;&lt;/code&gt;；段落间 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&lt;/code&gt; 因 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;\n&lt;/code&gt; 紧贴标签而自动忽略，不产生多余 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;br&amp;gt;&lt;/code&gt;。&lt;/p&gt;&lt;hr style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: medium medium 0.8px;border-style: none none solid;border-color: currentcolor currentcolor rgb(227, 227, 238);height: 0px;overflow: visible;margin: 24px 0px;border-image: none;color: inherit;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;/&gt;&lt;h2 id=&quot;四、验证结果&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 24px;margin: 0.67em 0px;line-height: 30px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E5%9B%9B%E9%AA%8C%E8%AF%81%E7%BB%93%E6%9E%9C&quot; name=&quot;四验证结果&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;四、验证结果&lt;/h2&gt;&lt;table width=&quot;NaN&quot;&gt;&lt;thead style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235)&quot;&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(249, 249, 251);color: rgb(59, 62, 85);font-size: 14px;line-height: 22px;vertical-align: middle&quot;&gt;检查项&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(249, 249, 251);color: rgb(59, 62, 85);font-size: 14px;line-height: 22px;vertical-align: middle&quot;&gt;结果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border: 0px&quot;&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;node --check ueditor.all.js&lt;/code&gt; 语法&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;✅ 通过&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(255, 255, 255);font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;font-weight: 700&quot;&gt;真实场景&lt;/span&gt;：&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;pre&amp;gt;code&amp;gt;span&lt;/code&gt; 逐行代码块（每行 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;/span&amp;gt;\n&lt;/code&gt;）→ 每行 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;br/&amp;gt;&lt;/code&gt;，缩进 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;amp;nbsp;&lt;/code&gt; 保留，span 结构保留&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(255, 255, 255);font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;来源网页无换行 + 纯文本回退 → 19 行全部恢复&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(255, 255, 255);font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;正常 pre（换行充足）→ 恢复逻辑跳过、不重复处理&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(255, 255, 255);font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;pre 与纯文本不匹配 / 无 pre / 单行 → 原样不动&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(255, 255, 255);font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;代码含 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;$1&lt;/code&gt; &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;$&amp;amp;&lt;/code&gt; &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;amp;&amp;amp;&lt;/code&gt; → 不被替换符吞掉&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(255, 255, 255);font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;纯文本多行 → 逐行 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;br/&amp;gt;&lt;/code&gt;，空行 → 双 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(255, 255, 255);font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;段落间 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&lt;/code&gt; → 不产生多余 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;&amp;lt;br&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(255, 255, 255);font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;Word 样式 + pre（修复 A）回归&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;仿真方法：Node 环境加载真实 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;ueditor.all.js&lt;/code&gt;，从文件中抽取注入的转换/恢复表达式，全链路复刻 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;恢复 → filterWord → 换行转换 → htmlparser → filterInputRule → toHtml&lt;/code&gt;，断言最终 insertHtml 内容。测试脚本：&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;test_paste_pipeline.js&lt;/code&gt;（工作区根目录，可随时重跑复验）。&lt;/p&gt;&lt;hr style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: medium medium 0.8px;border-style: none none solid;border-color: currentcolor currentcolor rgb(227, 227, 238);height: 0px;overflow: visible;margin: 24px 0px;border-image: none;color: inherit;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;/&gt;&lt;h2 id=&quot;五、部署与缓存&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 24px;margin: 0.67em 0px;line-height: 30px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E4%BA%94%E9%83%A8%E7%BD%B2%E4%B8%8E%E7%BC%93%E5%AD%98&quot; name=&quot;五部署与缓存&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;五、部署与缓存&lt;/h2&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;改动涉及两个文件，&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;font-weight: 700&quot;&gt;必须同时上传&lt;/span&gt;：&lt;/p&gt;&lt;table width=&quot;NaN&quot;&gt;&lt;thead style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235)&quot;&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(249, 249, 251);color: rgb(59, 62, 85);font-size: 14px;line-height: 22px;vertical-align: middle&quot;&gt;文件&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(249, 249, 251);color: rgb(59, 62, 85);font-size: 14px;line-height: 22px;vertical-align: middle&quot;&gt;改动&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border: 0px&quot;&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;ueditor-plus/ueditor.all.js&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;修复 A/B/C/D&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(227, 227, 238);background-color: rgb(249, 249, 251)&quot;&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(255, 255, 255);font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;&lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;ly_ueditor_plus_core.php&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0.8px;border-color: rgb(227, 227, 238);padding: 8px;background-color: rgb(255, 255, 255);font-size: 14px;color: rgb(59, 62, 85);line-height: 22px;vertical-align: middle&quot;&gt;加载版本号 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-feature-settings: normal;font-variation-settings: normal;color: rgb(37, 43, 58);line-height: 22px;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;?0309 → ?0313&lt;/code&gt;（破浏览器缓存）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);margin: 0px 0px 16px;padding: 0px;overflow-wrap: break-word;color: rgb(37, 43, 58);line-height: 26px;overflow: hidden;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;&gt;上传后 &lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;font-weight: 700&quot;&gt;Ctrl+F5 强刷&lt;/span&gt;编辑页。若仍有异常，可用 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;paste_diagnose.html&lt;/code&gt;（上传到插件目录后浏览器打开）——它直接读取剪贴板 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;text/html&lt;/code&gt; 与 &lt;code style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;#39;Liberation Mono&amp;#39;, &amp;#39;Courier New&amp;#39;, monospace;font-size: 14px;font-feature-settings: normal;font-variation-settings: normal;line-height: 22px;white-space: pre-wrap;border-radius: 6px;padding: 2px 6px;background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249)&quot;&gt;text/plain&lt;/code&gt;，并逐步复刻粘贴管线，红色步骤即换行丢失点。&lt;/p&gt;&lt;hr style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: medium medium 0.8px;border-style: none none solid;border-color: currentcolor currentcolor rgb(227, 227, 238);height: 0px;overflow: visible;margin: 24px 0px;border-image: none;color: inherit;font-family: sans-serif;font-size: 16px;background-color: rgb(255, 255, 255)&quot;/&gt;&lt;h2 id=&quot;六、文件变更清单&quot; style=&quot;white-space: normal;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);font-size: 24px;margin: 0.67em 0px;line-height: 30px;color: rgb(37, 43, 58);font-family: sans-serif;background-color: rgb(255, 255, 255)&quot;&gt;&lt;a href=&quot;https://gitcode.com/micoder/ly_ueditor_plus#%E5%85%AD%E6%96%87%E4%BB%B6%E5%8F%98%E6%9B%B4%E6%B8%85%E5%8D%95&quot; name=&quot;六文件变更清单&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: rgb(229, 231, 235);background-color: transparent;color: rgb(41, 81, 224);cursor: pointer;position: absolute;width: 24px;left: 8px;text-underline-offset: 0.2rem&quot;&gt;&lt;span style=&quot;box-sizing: border-box;--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;border-width: 0px;border-style: solid;border-color: #E5E7EB;visibility: hidden;pointer-events: none;line-height: 1.5;display: inline-block&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; fill=&quot;none&quot;&gt;&lt;path d=&quot;M11.182 1.98956C10.9867 1.7943 10.6702 1.7943 10.4749 1.98956L6.9393 5.52512L6.2322 4.81801L9.7678 1.28245C10.3536 0.696664 11.3033 0.696667 11.8891 1.28245L14.7175 4.11088C15.3033 4.69667 15.3033 5.64642 14.7175 6.2322L11.1819 9.76776L10.4748 9.06065L14.0104 5.52509C14.2057 5.32983 14.2057 5.01325 14.0104 4.81798L11.182 1.98956ZM1.98962 11.182C1.79436 10.9867 1.79436 10.6701 1.98962 10.4748L5.52516 6.93931L4.81805 6.23221L1.28252 9.76774C0.69673 10.3535 0.696729 11.3033 1.28252 11.8891L4.11094 14.7175C4.69673 15.3033 5.64648 15.3033 6.23226 14.7175L9.7678 11.182L9.06069 10.4748L5.52516 14.0104C5.32989 14.2056 5.01331 14.2056 4.81805 14.0104L1.98962 11.182ZM9.76775 5.52513L5.52511 9.76777L6.23221 10.4749L10.4749 6.23224L9.76775 5.52513Z&quot; fill=&quot;var(--theme-icon-fill-weak)&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;六、文件变更清单&lt;/h2&gt;&lt;pre style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; margin: 0px 0px 24px; color: rgb(37, 43, 58); background-color: rgb(241, 241, 248); padding: 16px 28px 16px 16px; position: relative; overflow-x: auto; scrollbar-width: thin; line-height: 22px;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / .5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; border-width: 0px; border-style: solid; border-color: rgb(229, 231, 235); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(246, 247, 249); padding: 2px 6px; display: block; overflow-x: auto; line-height: 22px; border-radius: 6px;&quot;&gt;ueditor-plus/ueditor.all.js &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;粘贴插件修复(4处)+filterWord pre 保护&lt;br/&gt;ly_ueditor_plus_core.php &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 版本号 ?0309→?0313&lt;br/&gt;paste_diagnose.html &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;诊断页(捕获剪贴板双格式+管线分步)&lt;br/&gt;test_paste_pipeline.js &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Node 全链路仿真测试(13 用例)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 01 Sep 2026 10:36:52 +0800</pubDate></item><item><title>oracle 26ai安装示例数据库</title><link>https://www.yjlink.cc/?id=3567</link><description>&lt;h1 class=&quot;cloud-blog-detail-title&quot; style=&quot;box-sizing: border-box; margin: 0px 0px 20px; padding: 0px; font-size: 36px; color: rgb(25, 25, 25); font-weight: 500; line-height: 48px; overflow-wrap: break-word; font-family: -apple-system, HuaweiSans, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, STHeiti, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Microsoft JhengHei&amp;quot;, SimSun, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;strong&gt;oracle 26ai安装示例数据库&lt;/strong&gt;&lt;/h1&gt;&lt;h1 class=&quot;md-h1&quot; id=&quot;H10&quot; style=&quot;box-sizing: border-box; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255); margin-top: 0px !important;&quot;&gt;安装报告 (Installation Report)&lt;br/&gt;&lt;/h1&gt;&lt;blockquote style=&quot;box-sizing: border-box; margin: 0px; padding: 0px 1em; background-color: rgb(250, 250, 250); border-left: 0.25em solid rgb(223, 226, 229); word-break: break-word; font-size: 16px; line-height: 30px; color: rgb(106, 115, 125); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px;&quot;&gt;安装日期：2026-08-15。本报告记录示例 schema 在本环境中的安装过程、账号信息、验证结果与已知限制。&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H21&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;1. 目标数据库&lt;/h2&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;项目&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;值&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;数据库&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;Oracle 23.26.3.0.0（26ai 系列），多租户架构&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;主机 / 端口&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;192.168.3.88:1521 openueler2509系统&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;容器&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;CDB: &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;ORCLCDB&lt;/code&gt;，PDB: &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;ORCLPDB1&lt;/code&gt;（READ WRITE）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;连接串&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;192.168.3.88:1521/ORCLPDB1&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;组件&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;XDB、SDO（Spatial）均 VALID&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H22&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;2. 客户端工具（安装于本机）&lt;/h2&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;工具&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;版本&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;位置&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;SQLcl&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;26.2.1.222.1617&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;D:\tools\sqlcl&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;Instant Client (Basic)&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;23.26.3.0.0&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;D:\Program Files\instantclient-basic-oracle-23.26.3.0.0\instantclient_23_26&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;Instant Client (Tools，含 SQL*Loader)&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;23.26.3.0.0&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;同上（本次补充解压，提供 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;sqlldr.exe&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H23&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;3. 账号汇总&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;所有 schema 密码统一为 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;88888888&lt;/code&gt;，数据表空间统一为 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;sample&lt;/code&gt;，临时表空间 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;TEMP&lt;/code&gt;。&lt;/p&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;用户&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;密码&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;表空间&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;system / sys&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;88888888&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;管理员账号（sys 以 SYSDBA 连接）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;hr&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;88888888&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;sample&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;Human Resources&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;co&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;88888888&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;sample&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;Customer Orders&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;sh&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;88888888&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;sample&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;Sales History&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;oe&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;88888888&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;sample&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;Order Entry（归档，含 OC 子 schema）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;pm&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;88888888&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;sample&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;Product Media（归档）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H24&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;4. 安装过程摘要&lt;/h2&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;HR / CO / SH（受支持 schema）&lt;/strong&gt;：以 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;system&lt;/code&gt; 连接 PDB，分别在 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;human_resources/&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;customer_orders/&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;sales_history/&lt;/code&gt; 目录运行 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;&amp;lt;schema&amp;gt;_install.sql&lt;/code&gt;，按提示输入密码 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;88888888&lt;/code&gt;、表空间 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;sample&lt;/code&gt;、覆盖 YES。SH 官方要求使用 SQLcl 运行。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;OE / PM（归档 schema）&lt;/strong&gt;：先按官方流程执行 perl 替换 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;__SUB__CWD__&lt;/code&gt; → &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;D:/db-sample-schemas&lt;/code&gt;（生成了 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;.bak&lt;/code&gt; 备份），再以 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;system&lt;/code&gt; 连接，运行 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;order_entry/oe_main.sql&lt;/code&gt; 与 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;product_media/pm_main.sql&lt;/code&gt;，传入 9 个参数（各 schema 密码、表空间 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;sample&lt;/code&gt;、临时表空间 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;TEMP&lt;/code&gt;、数据/日志路径、版本 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;v3&lt;/code&gt;、连接串）。PM 通过 SQL*Loader 从客户端加载 LOB 数据。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H25&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;5. 验证结果（provided = actual，全部一致）&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;HR：&lt;/strong&gt;&lt;/p&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;表&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;行数&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;regions / countries / departments / locations / employees / jobs / job_history&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;5 / 25 / 27 / 23 / 107 / 19 / 10&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;CO：&lt;/strong&gt;&lt;/p&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;表&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;行数&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;customers / stores / products / orders / order_items / shipments / inventory&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;392 / 23 / 46 / 1950 / 3914 / 1892 / 566&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;SH：&lt;/strong&gt;&lt;/p&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;表&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;行数&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;channels / costs / countries / customers / products / promotions / sales / times / supplementary_demographics&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;5 / 82112 / 35 / 55500 / 72 / 503 / 918843 / 1826 / 4500&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;&lt;em style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit;&quot;&gt;&lt;em style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit;&quot;&gt;OE（93 个对象，0 无效；OC 类型 27 个，公共同义词 COE_&lt;/em&gt; 5 个，HR→OE 授权 9 项）：&lt;/em&gt;*&lt;/p&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;表&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;行数&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;customers / orders / order_items / product_information / product_descriptions / inventories / warehouses / promotions&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;319 / 105 / 665 / 288 / 8640 / 1112 / 9 / 2&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;PM（8 个对象，0 无效；SQL*Loader 加载 16 条记录，0 拒绝）：&lt;/strong&gt;&lt;/p&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;对象&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;行数&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;print_media&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;textdocs_nestedtab（嵌套表）&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;12&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H26&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;6. 已知限制&lt;/h2&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;OE 的 XDB 采购订单演示&lt;/strong&gt;（&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;xdb03usg.sql&lt;/code&gt;）：目录对象 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;SS_OE_XMLDIR&lt;/code&gt; 指向服务器端路径，而 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;purchaseOrder.xml/.xsd&lt;/code&gt; 文件在安装机本地、无法放置到远端服务器，因此 XDB 资源创建步骤失败（ORA-22288 / ORA-31001）。仅影响 XDB 演示资源，OE/OC 的表、视图、类型与数据完整。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;PM 的 BFILE 列&lt;/strong&gt;（&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;print_media.ad_graphic&lt;/code&gt;）：&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;MEDIA_DIR&lt;/code&gt; 目录对象已创建但指向本机路径字符串，服务器上无对应媒体文件，BFILE 定位符存在但 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;DBMS_LOB.FILEEXISTS = 0&lt;/code&gt;。BLOB 数据（照片、文档等）均正常入库。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H27&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;7. 日志位置&lt;/h2&gt;&lt;ul style=&quot;box-sizing: border-box; padding: 0px 0px 0px 2em; list-style-position: inherit; list-style-image: inherit; color: rgb(36, 41, 46); font-size: 16px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;HR / CO / SH：各 schema 目录下的 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;&amp;lt;schema&amp;gt;_install.log&lt;/code&gt;，运行输出副本在仓库根目录 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;*_run_out.log&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;OE / PM：&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;logs/oe_oc_v3.log&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;logs/pm_main.log&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;logs/pm_p_lob.log&lt;/code&gt;（及运行输出副本 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;logs/oe_run_out.log&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;logs/pm_run_out.log&lt;/code&gt;）。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H28&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;8. 卸载方式&lt;/h2&gt;&lt;ul style=&quot;box-sizing: border-box; padding: 0px 0px 0px 2em; list-style-position: inherit; list-style-image: inherit; color: rgb(36, 41, 46); font-size: 16px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;HR / CO / SH：以特权用户运行各目录下的 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;&amp;lt;schema&amp;gt;_uninstall.sql&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;OE / PM：以特权用户执行 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;DROP USER oe CASCADE;&lt;/code&gt; 与 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;DROP USER pm CASCADE;&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H29&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;9. 具体安装命令与步骤&lt;/h2&gt;&lt;blockquote style=&quot;box-sizing: border-box; margin: 0px; padding: 0px 1em; background-color: rgb(250, 250, 250); border-left: 0.25em solid rgb(223, 226, 229); word-break: break-word; font-size: 16px; line-height: 30px; color: rgb(106, 115, 125); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px;&quot;&gt;以下命令在本机 Git Bash（Windows）中实际执行并验证通过。&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;/d/...&lt;/code&gt; 为 Git Bash 路径写法，等价于 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;D:/...&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 class=&quot;md-h3&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px; color: rgb(37, 43, 58); font-size: 1.25em; line-height: 1.25; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;9.1 工具准备&lt;/h3&gt;&lt;pre class=&quot; codetheme-tomorrownight language-bash&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 16px; color: rgb(204, 204, 204); word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;&lt;code class=&quot; codetheme-tomorrownight language-bash&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; word-spacing: normal; word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #999999;&quot;&gt;# 1) 下载并解压 SQLcl（需已装 Java 11+）&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;token function&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;curl&lt;/span&gt; -sSL -o sqlcl-latest.zip https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip&lt;br/&gt;&lt;span class=&quot;token function&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;unzip&lt;/span&gt; -q sqlcl-latest.zip -d /d/tools &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;token comment&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #999999;&quot;&gt;# 得到 /d/tools/sqlcl&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;token comment&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #999999;&quot;&gt;# 2) 下载 Instant Client Tools 包（提供 sqlldr.exe），解压进已有 Basic 目录&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;token function&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;curl&lt;/span&gt; -sSL -o ic-tools.zip &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;quot;https://download.oracle.com/otn_software/nt/instantclient/2326300/instantclient-tools-windows.x64-23.26.3.0.0.zip&amp;quot;&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;token function&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;unzip&lt;/span&gt; -q ic-tools.zip -d &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;quot;/d/Program Files/instantclient-basic-oracle-23.26.3.0.0/instantclient_23_26/&amp;quot;&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;token comment&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #999999;&quot;&gt;# zip 内含一层 instantclient_23_26/ 子目录，需将内容上移一层到 Basic 目录根&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;token comment&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #999999;&quot;&gt;# 3) 建日志目录&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;token function&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;mkdir&lt;/span&gt; -p /d/db-sample-schemas/logs&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 class=&quot;md-h3&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px; color: rgb(37, 43, 58); font-size: 1.25em; line-height: 1.25; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;9.2 HR / CO / SH（受支持 schema，交互提示）&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;脚本用 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;ACCEPT&lt;/code&gt; 依次询问：密码、表空间、是否覆盖已存在 schema。以下用管道预填答案：&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;三行输入 = &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;密码&lt;/code&gt; / &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;表空间&lt;/code&gt; / &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;覆盖确认&lt;/code&gt;（空行回车 = 默认 YES）。&lt;/p&gt;&lt;pre class=&quot; codetheme-tomorrownight language-bash&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 16px; color: rgb(204, 204, 204); word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;&lt;code class=&quot; codetheme-tomorrownight language-bash&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; word-spacing: normal; word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #999999;&quot;&gt;# HR&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;cd&lt;/span&gt; /d/db-sample-schemas/human_resources&lt;br/&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;printf&lt;/span&gt; &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;#39;88888888\nsample\n\n&amp;#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #67CDCC; background: none;&quot;&gt;|&lt;/span&gt; /d/tools/sqlcl/bin/sql -S &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;quot;system/88888888@192.168.3.88:1521/ORCLPDB1&amp;quot;&lt;/span&gt; @hr_install.sql&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;token comment&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #999999;&quot;&gt;# CO&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;cd&lt;/span&gt; /d/db-sample-schemas/customer_orders&lt;br/&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;printf&lt;/span&gt; &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;#39;88888888\nsample\n\n&amp;#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #67CDCC; background: none;&quot;&gt;|&lt;/span&gt; /d/tools/sqlcl/bin/sql -S &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;quot;system/88888888@192.168.3.88:1521/ORCLPDB1&amp;quot;&lt;/span&gt; @co_install.sql&lt;br/&gt;&lt;br/&gt;&lt;span class=&quot;token comment&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #999999;&quot;&gt;# SH（官方要求 SQLcl 运行）&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;cd&lt;/span&gt; /d/db-sample-schemas/sales_history&lt;br/&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;printf&lt;/span&gt; &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;#39;88888888\nsample\n\n&amp;#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #67CDCC; background: none;&quot;&gt;|&lt;/span&gt; /d/tools/sqlcl/bin/sql -S &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;quot;system/88888888@192.168.3.88:1521/ORCLPDB1&amp;quot;&lt;/span&gt; @sh_install.sql&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;三个脚本末尾自带的验证段（provided = actual 行数对比）会打印在输出与 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;&amp;lt;schema&amp;gt;_install.log&lt;/code&gt; 中。&lt;/p&gt;&lt;h3 class=&quot;md-h3&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px; color: rgb(37, 43, 58); font-size: 1.25em; line-height: 1.25; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;9.3 OE / PM（归档 schema，参数传入）&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;归档脚本用 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;DEFINE &amp;amp;1..&amp;amp;9&lt;/code&gt; 接收参数（非交互提示），需先替换脚本与数据文件中的&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;__SUB__CWD__&lt;/code&gt; 占位符为仓库绝对路径（官方安装流程，会生成 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;.bak&lt;/code&gt; 备份）：&lt;/p&gt;&lt;pre class=&quot; codetheme-tomorrownight language-bash&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 16px; color: rgb(204, 204, 204); word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;&lt;code class=&quot; codetheme-tomorrownight language-bash&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; word-spacing: normal; word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;&quot;&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;cd&lt;/span&gt; /d/db-sample-schemas&lt;br/&gt;perl -p -i.bak -e &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;#39;s#__SUB__CWD__#D:/db-sample-schemas#g&amp;#39;&lt;/span&gt; *.sql */*.sql */*.dat&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;OE（含 OC 子 schema）&lt;/strong&gt; — &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;@oe_main.sql&lt;/code&gt; 后跟 9 个参数：&lt;/p&gt;&lt;pre class=&quot; codetheme-tomorrownight language-bash&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 16px; color: rgb(204, 204, 204); word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;&lt;code class=&quot; codetheme-tomorrownight language-bash&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; word-spacing: normal; word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;&quot;&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;cd&lt;/span&gt; /d/db-sample-schemas&lt;br/&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;printf&lt;/span&gt; &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;#39;exit\n&amp;#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #67CDCC; background: none;&quot;&gt;|&lt;/span&gt; /d/tools/sqlcl/bin/sql -S -L &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;quot;system/88888888@192.168.3.88:1521/ORCLPDB1&amp;quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;\&lt;/span&gt;&lt;br/&gt; &amp;nbsp;@order_entry/oe_main.sql &lt;span class=&quot;token number&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;88888888&lt;/span&gt; sample TEMP &lt;span class=&quot;token number&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;88888888&lt;/span&gt; &lt;span class=&quot;token number&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;88888888&lt;/span&gt; &lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;\&lt;/span&gt;&lt;br/&gt; &amp;nbsp;D:/db-sample-schemas D:/db-sample-schemas/logs/ v3 &lt;span class=&quot;token number&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;192.168&lt;/span&gt;.3.88:1521/ORCLPDB1&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;PM&lt;/strong&gt; — &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;@product_media/pm_main.sql&lt;/code&gt; 后跟 9 个参数（先确保 sqlldr 在 PATH 中）：&lt;/p&gt;&lt;pre class=&quot; codetheme-tomorrownight language-bash&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 16px; color: rgb(204, 204, 204); word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;&lt;code class=&quot; codetheme-tomorrownight language-bash&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; word-spacing: normal; word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;&quot;&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&lt;span class=&quot;token environment constant&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F8C555;&quot;&gt;PATH&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #67CDCC; background: none;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;quot;/d/Program Files/instantclient-basic-oracle-23.26.3.0.0/instantclient_23_26:&lt;span class=&quot;token environment constant&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F8C555;&quot;&gt;$PATH&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br/&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;cd&lt;/span&gt; /d/db-sample-schemas&lt;br/&gt;&lt;span class=&quot;token builtin class-name&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #CC99CD;&quot;&gt;printf&lt;/span&gt; &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;#39;exit\n&amp;#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #67CDCC; background: none;&quot;&gt;|&lt;/span&gt; /d/tools/sqlcl/bin/sql -S -L &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;quot;system/88888888@192.168.3.88:1521/ORCLPDB1&amp;quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;\&lt;/span&gt;&lt;br/&gt; &amp;nbsp;@product_media/pm_main.sql &lt;span class=&quot;token number&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;88888888&lt;/span&gt; sample TEMP &lt;span class=&quot;token number&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;88888888&lt;/span&gt; &lt;span class=&quot;token number&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;88888888&lt;/span&gt; &lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;\&lt;/span&gt;&lt;br/&gt; &amp;nbsp;D:/db-sample-schemas/product_media/ D:/db-sample-schemas/logs/ &lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;\&lt;/span&gt;&lt;br/&gt; &amp;nbsp;D:/db-sample-schemas/product_media/ &lt;span class=&quot;token number&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #F08D49;&quot;&gt;192.168&lt;/span&gt;.3.88:1521/ORCLPDB1&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;参数顺序说明（OE / PM 一致）：&lt;/strong&gt;&lt;/p&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;#&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;含义&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;本次取值&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;1&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;目标 schema 密码&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;88888888&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;2&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;默认表空间&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;sample&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;3&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;临时表空间&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;TEMP&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;4&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;HR（OE 用）/ OE（PM 用）密码&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;88888888&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;5&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;SYS 密码&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;88888888&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;6&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;数据/控制文件目录&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;OE: &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;D:/db-sample-schemas&lt;/code&gt;；PM: &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;D:/db-sample-schemas/product_media/&lt;/code&gt;（PM 中同时写入目录对象 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;MEDIA_DIR&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;7&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;日志目录（末尾需带分隔符）&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;D:/db-sample-schemas/logs/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;8&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;OE: 版本号 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;v3&lt;/code&gt;（对应 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;coe_v3/loe_v3/poe_v3&lt;/code&gt; 系列脚本，注意不是 README 原写的 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;3&lt;/code&gt;）；PM: 工作目录（存放 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;pm_p_lob.dat&lt;/code&gt;）&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;OE: &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;v3&lt;/code&gt;；PM: &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;D:/db-sample-schemas/product_media/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;9&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;连接串&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;192.168.3.88:1521/ORCLPDB1&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;blockquote style=&quot;box-sizing: border-box; margin: 0px; padding: 0px 1em; background-color: rgb(250, 250, 250); border-left: 0.25em solid rgb(223, 226, 229); word-break: break-word; font-size: 16px; line-height: 30px; color: rgb(106, 115, 125); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px;&quot;&gt;说明：纯数字密码（&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;88888888&lt;/code&gt;）无需引号即可 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;CREATE USER ... IDENTIFIED BY ...&lt;/code&gt;；&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;CREATE DIRECTORY&lt;/code&gt; 不校验服务器路径是否存在，故 PM 的 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;MEDIA_DIR&lt;/code&gt; 指向本机路径也能完成安装。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 class=&quot;md-h3&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px; color: rgb(37, 43, 58); font-size: 1.25em; line-height: 1.25; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;9.4 验证抽查命令&lt;/h3&gt;&lt;pre class=&quot; codetheme-tomorrownight language-bash&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 16px; color: rgb(204, 204, 204); word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;&lt;code class=&quot; codetheme-tomorrownight language-bash&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; word-spacing: normal; word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;&quot;&gt;/d/tools/sqlcl/bin/sql -S -L &lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;quot;system/88888888@192.168.3.88:1521/ORCLPDB1&amp;quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #67CDCC; background: none;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #7EC699; background-color: transparent;&quot;&gt;&amp;#39;EOF&amp;#39;&lt;br/&gt;select &amp;#39;HR.employees=&amp;#39;||count(*) from hr.employees;&lt;br/&gt;select &amp;#39;CO.orders=&amp;#39;||count(*) from co.orders;&lt;br/&gt;select &amp;#39;SH.sales=&amp;#39;||count(*) from sh.sales;&lt;br/&gt;select &amp;#39;OE.customers=&amp;#39;||count(*) from oe.customers;&lt;br/&gt;select &amp;#39;PM.print_media=&amp;#39;||count(*) from pm.print_media;&lt;br/&gt;exit&lt;br/&gt;EOF&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255); margin-bottom: 0px !important;&quot;&gt;完整的逐表行数对比见上文第 5 节验证结果。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 01 Sep 2026 09:55:23 +0800</pubDate></item><item><title>libfastjson 1.2304.0 重建修复记录</title><link>https://www.yjlink.cc/?id=3565</link><description>&lt;h1&gt;libfastjson 1.2304.0 重建修复记录&lt;/h1&gt;
&lt;p&gt;适配自编译 glibc 2.44 的 &lt;strong&gt;IFUNC ​&lt;code&gt;modf&lt;/code&gt; ​崩溃&lt;/strong&gt;修复工程归档&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;📑 目录&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;一、项目简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;二、问题背景&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;三、根因分析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;四、修复方案&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;五、验证结果&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;六、仓库结构&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;七、快速开始（重建步骤）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;八、相关仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;九、遗留事项&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;十、经验总结&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;&quot;&gt;许可协议&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;一、项目简介&lt;/h2&gt;
&lt;p&gt;本仓库归档了 &lt;strong&gt;libfastjson 1.2304.0&lt;/strong&gt; 在 openEuler 2509（含 Kylin 组件）主机上，&lt;br /&gt;
因自编译 &lt;strong&gt;glibc 2.44&lt;/strong&gt; 升级引发的 &lt;strong&gt;rsyslogd SIGSEGV 崩溃循环&lt;/strong&gt; 的完整修复过程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📦 发行版源码包（&lt;code&gt;src.rpm&lt;/code&gt;）、spec 与上游源码&lt;/li&gt;
&lt;li&gt;🔧 可复现的构建脚本（关键参数：&lt;code&gt;-Wl,--no-as-needed -lm&lt;/code&gt; 强制直接链接 &lt;code&gt;libm.so.6&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;📥 重建后的 RPM 产物&lt;/li&gt;
&lt;li&gt;📄 问题根因、反汇编证据、验证结果&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;背景：2026-08-22 主机手动构建并安装了 glibc 2.44-1（无签名，替代发行版&lt;br /&gt;
glibc 2.38-71.oe2509），随后 rsyslog 服务崩溃循环，系统日志收集中断。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;二、问题背景&lt;/h2&gt;
&lt;p&gt;升级 glibc 2.44 后，&lt;code&gt;rsyslog.service&lt;/code&gt; 陷入崩溃循环：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;rsyslog.service: Main process exited, code=dumped, status=11/SEGV
rsyslogd: Relink `/usr/lib64/libfastjson.so.4' with `/usr/lib64/libm.so.6' for IFUNC symbol `modf'
rsyslogd[xxxxx]: segfault at 9f ip ... in libm.so.6[46d52,...] error 4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;影响范围：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每 1.5~2 秒崩溃一次（SIGSEGV），systemd 无限自动重启&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/var/log/messages&lt;/code&gt;、&lt;code&gt;secure&lt;/code&gt;、&lt;code&gt;cron&lt;/code&gt; 等全部停写&lt;/li&gt;
&lt;li&gt;journald 被崩溃信息刷屏（近 3 天 7018 条 err 日志）&lt;/li&gt;
&lt;li&gt;堆积 &lt;strong&gt;33,473 个 coredump，占用 4.1GB&lt;/strong&gt; 磁盘&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;三、根因分析&lt;/h2&gt;
&lt;h3&gt;3.1 崩溃定位链&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;​**&lt;code&gt;rsyslogd -N1&lt;/code&gt; ​配置测试直接段错误**​（exit=139）；gdb 回溯显示崩溃发生在&lt;br /&gt;
动态链接器 &lt;code&gt;ld-linux-x86-64.so.2&lt;/code&gt; 调用 libm.so.6 内 IFUNC 解析器期间。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;​**反汇编 ​&lt;code&gt;libm.so.6 + 0x46d52&lt;/code&gt;**​（即 &lt;code&gt;modf@@GLIBC_2.2.5&lt;/code&gt; IFUNC 解析器）：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;46d40:  endbr64
46d44:  mov  0xca285(%rip),%rax   ; 取 GOT 槽 0x110fd0 内容
46d52:  testb $0x10, 0x9f(%rax)   ; &amp;lt;&amp;lt;&amp;lt; 崩溃：%rax == 0，读地址 0x9f
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解析器从 GOT 槽读取 &lt;code&gt;_rtld_global_ro@GLIBC_PRIVATE&lt;/code&gt; 指针（CPU 特性数据），&lt;br /&gt;
​&lt;strong&gt;运行时该 GOT 槽为 NULL&lt;/strong&gt;​。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;​**&lt;code&gt;libfastjson.so.4&lt;/code&gt; ​的 DT_NEEDED 只有 ​&lt;code&gt;libc.so.6&lt;/code&gt;，缺少 ​&lt;code&gt;libm.so.6&lt;/code&gt;**​：&lt;br /&gt;
libc.so.6 也导出 &lt;code&gt;modf&lt;/code&gt;（弱 IFUNC），链接期 &lt;code&gt;--as-needed&lt;/code&gt; 把 &lt;code&gt;-lm&lt;/code&gt; 丢弃。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;运行时 libfastjson 的 &lt;code&gt;modf&lt;/code&gt; 引用经​&lt;strong&gt;全局作用域预取&lt;/strong&gt;​（symbol preemption）&lt;br /&gt;
绑定到 libm 的 IFUNC；该路径下解析器执行时 &lt;code&gt;_rtld_global_ro&lt;/code&gt; GOT 槽&lt;br /&gt;
尚未正确填充 → NULL 解引用 → SIGSEGV。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;3.2 关键对照实验&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;结果&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;直接 &lt;code&gt;gcc test.c -lm&lt;/code&gt; 调用 modf&lt;/td&gt;
&lt;td&gt;✅ 正常（exit=0），即使 &lt;code&gt;-Wl,-z,now&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libfastjson 不直接链接 libm，modf 经全局作用域预取&lt;/td&gt;
&lt;td&gt;❌ 崩溃（exit=139）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;​&lt;strong&gt;结论&lt;/strong&gt;​：问题不是 glibc 2.44 的 modf 本身损坏，而是 libfastjson 未直接链接&lt;br /&gt;
libm 导致的 IFUNC 预取路径问题。动态链接器给出的提示正是修复方向：&lt;br /&gt;
​**“Relink libfastjson.so.4 with libm.so.6 for IFUNC symbol modf”**​。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;四、修复方案&lt;/h2&gt;
&lt;p&gt;保留 glibc 2.44，重建 libfastjson，强制其直接链接 &lt;code&gt;libm.so.6&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rpmbuild --rebuild \
    --define 'dist .oe2509' \
    --define 'build_ldflags -Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/generic-hardened-ld -Wl,--no-as-needed -lm' \
    libfastjson-1.2304.0-2.oe2509.src.rpm
&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;要点&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;移除 &lt;code&gt;--as-needed&lt;/code&gt; 并追加 &lt;code&gt;-lm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;使 DT_NEEDED 包含 &lt;code&gt;libm.so.6&lt;/code&gt;，modf 直接绑定、不再预取&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--define 'dist .oe2509'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;保持 release 后缀与发行版一致，便于 &lt;code&gt;rpm -Uvh --replacepkgs&lt;/code&gt; 同版本替换&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rsyslog 本体无需改动&lt;/td&gt;
&lt;td&gt;仅 libfastjson 需重建；rsyslog 单独重建见 micoder/rsyslog&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;五、验证结果&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;验证项&lt;/th&gt;
&lt;th&gt;修复前&lt;/th&gt;
&lt;th&gt;修复后&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;readelf -d libfastjson.so.4&lt;/code&gt; NEEDED&lt;/td&gt;
&lt;td&gt;仅 &lt;code&gt;libc.so.6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;libm.so.6&lt;/code&gt; + &lt;code&gt;libc.so.6&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;rsyslogd -N1&lt;/code&gt; 配置测试&lt;/td&gt;
&lt;td&gt;exit=139（SIGSEGV）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;exit=0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rsyslog.service&lt;/td&gt;
&lt;td&gt;崩溃循环&lt;/td&gt;
&lt;td&gt;active (running)，PID 稳定&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/var/log/messages&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;空（停写）&lt;/td&gt;
&lt;td&gt;正常写入&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;新增 coredump&lt;/td&gt;
&lt;td&gt;每 2 秒一个&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;六、仓库结构&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;libfastjson/
├── README.md                    # 本文件（项目总览）
├── REPORT.md                    # 完整修复总结报告
├── build.sh                     # 可复现构建脚本（含关键参数说明）
├── SOURCES/
│   ├── libfastjson-1.2304.0.tar.gz   # 上游源码包
│   └── libfastjson.spec               # 发行版 spec（未改动）
├── SRPMS/
│   └── libfastjson-1.2304.0-2.oe2509.src.rpm   # 发行版源码 RPM
└── RPMS/
    ├── libfastjson-1.2304.0-2.oe2509.x86_64.rpm        # 重建后的主包（修复产物）
    ├── libfastjson-devel-1.2304.0-2.oe2509.x86_64.rpm  # 开发头文件包
    ├── libfastjson-debuginfo-1.2304.0-2.oe2509.x86_64.rpm    # 调试信息包
    └── libfastjson-debugsource-1.2304.0-2.oe2509.x86_64.rpm  # 调试源码包
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;七、快速开始（重建步骤）&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. 环境准备（确保 source 仓库已启用、构建工具链就绪）
dnf repolist --enabled | grep -i source
dnf install -y gcc make cmake rpm-build

# 2. 获取源码包并安装构建依赖
cd /root/rpmbuild/SRPMS
dnf download --source libfastjson
dnf builddep -y libfastjson-1.2304.0-2.oe2509.src.rpm

# 3. 重建 RPM（关键参数见 build.sh 注释）
rpmbuild --rebuild \
    --define 'dist .oe2509' \
    --define 'build_ldflags -Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/generic-hardened-ld -Wl,--no-as-needed -lm' \
    libfastjson-1.2304.0-2.oe2509.src.rpm

# 4. 安装重建后的 RPM（同版本替换）
cd /root/rpmbuild/RPMS/x86_64
rpm -Uvh --replacepkgs \
    libfastjson-1.2304.0-2.oe2509.x86_64.rpm \
    libfastjson-devel-1.2304.0-2.oe2509.x86_64.rpm

# 5. 验证
readelf -d /usr/lib64/libfastjson.so.4 | grep NEEDED   # 应包含 libm.so.6
rsyslogd -N1                                           # 应 exit=0
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;完整脚本见 &lt;code&gt;build.sh&lt;/code&gt;，可直接执行。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;八、相关仓库&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;仓库&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[micoder/rsyslog]&lt;code&gt;https://atomgit.com/micoder/rsyslog&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;rsyslog 8.2312.0 重建修复记录（依赖本仓库修复 libfastjson）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[micoder/glibc] &lt;code&gt;https://atomgit.com/micoder/glibc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;自编译 glibc 2.44 的构建工程（问题源头）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;九、遗留事项&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;​&lt;strong&gt;coredump 清理&lt;/strong&gt;​：已删除 &lt;code&gt;/var/lib/systemd/coredump/*&lt;/code&gt;（33,473 个文件，释放约 4GB）。&lt;br /&gt;
生产环境如需保留事故现场，可先归档再清理。&lt;/li&gt;
&lt;li&gt;​&lt;strong&gt;openssh 10.5p1&lt;/strong&gt;​：本机同为自编译（依赖新 glibc），当前 sshd 运行正常；&lt;br /&gt;
若日后出现类似 IFUNC 崩溃，可套用本方案（&lt;code&gt;--no-as-needed -lm&lt;/code&gt;）重建。&lt;/li&gt;
&lt;li&gt;​&lt;strong&gt;glibc 2.44 为无签名自编译包&lt;/strong&gt;​：建议保留 src.rpm 备份，避免 dnf 升级时被&lt;br /&gt;
系统 glibc 意外覆盖造成版本错乱。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;十、经验总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;​&lt;strong&gt;自编译 glibc 替换系统 glibc 影响面极大&lt;/strong&gt;​：所有发行版二进制都按旧 glibc ABI&lt;br /&gt;
构建，IFUNC / symbol preemption 路径最容易踩坑；升级后必须全量回归常驻服务&lt;br /&gt;
（日志、网络、数据库等）。&lt;/li&gt;
&lt;li&gt;​&lt;strong&gt;动态链接器的 “Relink X with Y for IFUNC symbol S” 警告是直接可用的修复&lt;br /&gt;
指引&lt;/strong&gt;​——把引用方与被引用库直接链接即可。&lt;/li&gt;
&lt;li&gt;​&lt;strong&gt;排查手法沉淀&lt;/strong&gt;​：&lt;code&gt;dmesg&lt;/code&gt; 定位段错误 → gdb 回溯 → 反汇编崩溃地址 →&lt;br /&gt;
&lt;code&gt;readelf -d&lt;/code&gt; 检查 DT_NEEDED → 最小程序对照验证。&lt;/li&gt;
&lt;li&gt;​&lt;strong&gt;版本化 RPM 重建&lt;/strong&gt;​（&lt;code&gt;--define 'dist'&lt;/code&gt; + 同版本替换）可保证系统可回退、&lt;br /&gt;
可审计，优于直接覆盖二进制。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;许可协议&lt;/h2&gt;
&lt;p&gt;本仓库内容遵循上游项目的 ​&lt;strong&gt;MIT License&lt;/strong&gt;​（见 &lt;code&gt;libfastjson.spec&lt;/code&gt;(SOURCES/libfastjson.spec)&lt;br /&gt;
&lt;code&gt;License: MIT&lt;/code&gt;）。重建产物 RPM 均基于 openEuler 发行版源码包构建，构建产物&lt;br /&gt;
的许可遵循对应上游与发行版约定。&lt;/p&gt;
</description><pubDate>Mon, 31 Aug 2026 18:03:54 +0800</pubDate></item><item><title>glibc 2.44 — openEuler 2509 RPM 打包工程</title><link>https://www.yjlink.cc/?id=3564</link><description>&lt;h1&gt;glibc 2.44 — openEuler 2509 RPM 打包工程&lt;/h1&gt;
&lt;h2&gt;项目简介&lt;/h2&gt;
&lt;p&gt;本仓库为在 &lt;strong&gt;openEuler 2509&lt;/strong&gt; 系统中以 RPM 方式打包构建 &lt;strong&gt;glibc-2.44&lt;/strong&gt; 的工程文件。&lt;/p&gt;
&lt;p&gt;项目由原 glibc-2.38 补丁集仓库经过&lt;strong&gt;架构过滤、补丁适用性审计、spec 适配&lt;/strong&gt;后升级而来，最终保留 4 个可应用于 glibc-2.44 的厂商定制/兼容性补丁。&lt;/p&gt;
&lt;h2&gt;仓库结构&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;glibc.spec                                    主打包配置（Version 2.44 / Release 1）
glibc.yaml                                    OBS 构建配置（version_control）
glibc-2.44.tar.gz                             上游源码包（本地保留，未纳入 git）
.patch × 4                                    厂商定制/兼容性补丁（见下）
bench.mk / glibc-bench-compare                benchtests 相关（Source3/4）
LanguageList                                  locale 语言列表（Source5，%install 使用）
nscd.conf / nsswitch.conf                     Source1/2，安装至 /etc
replace_same_file_to_hard_link.py             Source7，locale 硬链接处理
testsuite_whitelist                           Source8，%check 测试白名单
.gitignore                                    排除 glibc-2.44.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;保留的补丁（Patch0~Patch3）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;补丁&lt;/th&gt;
&lt;th&gt;性质&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;add-pthread_cond_clockwait-GLIBC_2_28.patch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;ABI 兼容&lt;/td&gt;
&lt;td&gt;为 openEuler 2.28 时代链接的二进制提供 &lt;code&gt;pthread_cond_clockwait@GLIBC_2.28&lt;/code&gt; 兼容符号（2.44 上游未含）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;add-Wl-z-noseparate-code-for-so.patch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;厂商性能&lt;/td&gt;
&lt;td&gt;x86_64 关闭 separate-code，避免 shell 类程序性能下降 8%~10%（&lt;code&gt;relro-LDFLAGS&lt;/code&gt; 机制在 2.44 仍有效）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;AArch64-modify_the_SVE_memcpy_implementation_for_32-byte_aligned_access.patch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;鲲鹏性能&lt;/td&gt;
&lt;td&gt;SVE memcpy 由 16 字节对齐改为 32 字节对齐，降低跨缓存行访问与 bank 冲突&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;strcmp-delete-align-for-loop_aligned.patch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;鲲鹏性能&lt;/td&gt;
&lt;td&gt;删除 strcmp &lt;code&gt;loop_aligned&lt;/code&gt; 的 &lt;code&gt;.p2align 4&lt;/code&gt;，修复鲲鹏 920 上 16~23 字符场景分支预测性能劣化&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;主要变更记录&lt;/h2&gt;
&lt;h3&gt;1. 补丁裁剪：370 → 4&lt;/h3&gt;
&lt;p&gt;原仓库 370 个补丁，历经两轮清理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;​&lt;strong&gt;架构过滤&lt;/strong&gt;​：仅保留 x86（x86_64/i386）与 arm（aarch64）相关补丁，删除 LoongArch、Sw64、S390、PowerPC、SPARC 等其他架构补丁及通用补丁（370 → 123）&lt;/li&gt;
&lt;li&gt;​&lt;strong&gt;2.44 适用性审计&lt;/strong&gt;​：将 123 个补丁按 spec 顺序对 glibc-2.44 源码逐一 &lt;code&gt;git apply --check&lt;/code&gt;，并做纯净树复检交叉验证——
&lt;ul&gt;
&lt;li&gt;117 个​&lt;strong&gt;不适用&lt;/strong&gt;​（绝大多数为 2.38 时代的上游 backport，2.44 已包含）→ 删除&lt;/li&gt;
&lt;li&gt;2 个经源码对照&lt;strong&gt;判定失效/冗余&lt;/strong&gt; → 删除：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;AArch64-Use-prefer_sve_ifuncs-for-SVE-memset.patch&lt;/code&gt;：&lt;code&gt;prefer_sve_ifuncs&lt;/code&gt; 变量在 2.44 已被上游移除（memcpy.c 重构），引用会导致编译失败&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0002-x86-Lower-non-temporal-copy-threshold-for-Hygon.patch&lt;/code&gt;：Hygon 3/8 非时序拷贝阈值功能已被 2.44 上游以更优形式包含&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;最终保留 &lt;strong&gt;4 个&lt;/strong&gt;可干净应用且功能仍需要的厂商定制/兼容补丁&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. spec 适配（2.38 → 2.44）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;字段&lt;/th&gt;
&lt;th&gt;原值&lt;/th&gt;
&lt;th&gt;新值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Version&lt;/td&gt;
&lt;td&gt;2.38&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.44&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Release&lt;/td&gt;
&lt;td&gt;120&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Source0&lt;/td&gt;
&lt;td&gt;&lt;code&gt;%{name}-%{version}.tar.xz&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;​**&lt;code&gt;.tar.gz&lt;/code&gt;**​（2.44 发布格式）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gcc 要求&lt;/td&gt;
&lt;td&gt;&amp;gt;= 7.2.1-6&lt;/td&gt;
&lt;td&gt;​**&amp;gt;= 12.1**​（对齐 2.44 INSTALL）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;binutils 要求&lt;/td&gt;
&lt;td&gt;&amp;gt;= 2.30-17&lt;/td&gt;
&lt;td&gt;​**&amp;gt;= 2.39**​（对齐 2.44 INSTALL）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patch 声明&lt;/td&gt;
&lt;td&gt;123 条&lt;/td&gt;
&lt;td&gt;​&lt;strong&gt;4 条&lt;/strong&gt;​（Patch0~Patch3）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;%changelog&lt;/td&gt;
&lt;td&gt;2.28~2.38 历史条目&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;清空并新增 2.44-1 条目&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;%autosetup -n %{name}-%{version} -p1&lt;/code&gt; 随 Version 自动适配解包目录。&lt;/p&gt;
&lt;h3&gt;3. 文件清理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;删除：其他架构补丁、通用补丁、不适用/失效补丁（共 366 个）、旧源码包 &lt;code&gt;glibc-2.38.tar.xz&lt;/code&gt;、未使用的 &lt;code&gt;LicenseList&lt;/code&gt;（Source6 声明但从未引用）&lt;/li&gt;
&lt;li&gt;保留：全部被 spec 引用的 Source 文件与辅助配置&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;补丁适用性审计方法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;解包 &lt;code&gt;glibc-2.44.tar.gz&lt;/code&gt; 得到纯净源码树&lt;/li&gt;
&lt;li&gt;按 spec 中 Patch 声明顺序，逐一对每个补丁执行 &lt;code&gt;git apply --check -p1&lt;/code&gt;（可应用则 &lt;code&gt;git apply&lt;/code&gt; 继续），模拟 &lt;code&gt;%autosetup&lt;/code&gt; 行为&lt;/li&gt;
&lt;li&gt;对失败补丁在纯净树复检，排除&amp;quot;前序补丁导致的时序冲突&amp;quot;误判&lt;/li&gt;
&lt;li&gt;对文本可应用的补丁再做​&lt;strong&gt;源码对照&lt;/strong&gt;​：确认改动未被 2.44 上游包含、引用的变量/宏仍存在、构建机制（如 &lt;code&gt;relro-LDFLAGS&lt;/code&gt;）仍生效&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;构建方法（openEuler 2509）&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. 安装构建依赖
dnf install -y gcc gcc-c++ binutils make &amp;gt;= 4.0 bison &amp;gt;= 2.7 gawk gettext \
    texinfo audit-libs-devel libcap-devel procps-ng util-linux \
    systemtap-sdt-devel systemd python3 m4 chrpath libselinux-devel \
    elfutils libidn2 gd-devel libpng-devel zlib-devel kernel-headers

# 2. 准备源码包（Source0 由 URL 下载，或使用本地 glibc-2.44.tar.gz）
curl -O https://ftp.gnu.org/gnu/glibc/glibc-2.44.tar.gz

# 3. 本地构建
rpmbuild -ba glibc.spec

# 4. 或通过 OBS 构建（glibc.yaml 提供版本控制信息）
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;备注&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;​&lt;strong&gt;源码包不纳入 git&lt;/strong&gt;​：&lt;code&gt;glibc-2.44.tar.gz&lt;/code&gt;（约 39 MiB）超过 gitcode 单文件 10 MiB 限制，且远端项目未启用 Git LFS（&lt;code&gt;project lfs not enabled&lt;/code&gt;），故保留本地、由 &lt;code&gt;.gitignore&lt;/code&gt; 排除，构建时由 Source0 URL 下载&lt;/li&gt;
&lt;li&gt;本地已安装 git-lfs（3.6.1），若日后在 gitcode 启用 LFS，可将源码包迁移为 LFS 跟踪&lt;/li&gt;
&lt;li&gt;补丁适用性审计为静态验证（&lt;code&gt;git apply --check&lt;/code&gt; + 源码对照）；已在 openEuler 25.09 本机完成一次完整 &lt;code&gt;rpmbuild&lt;/code&gt; 构建验证（见下节）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;本机 RPM 构建验证（2026-08-22）&lt;/h2&gt;
&lt;p&gt;在 openEuler 25.09 本机成功完成 glibc-2.44 的 RPM 构建。&lt;/p&gt;
&lt;p&gt;​&lt;strong&gt;构建环境&lt;/strong&gt;​：gcc 12.3.1、binutils 2.41、make 4.4.1、python 3.11.13，均满足 2.44 INSTALL 工具链要求。&lt;/p&gt;
&lt;p&gt;​&lt;strong&gt;构建命令&lt;/strong&gt;​（4 核限制避免主机过载，跳过测试套件）：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rpmbuild -ba --without testsuite --define &amp;quot;_smp_mflags -j4&amp;quot; SPECS/glibc.spec
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​&lt;strong&gt;构建中修复的错误&lt;/strong&gt;​：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;错误&lt;/th&gt;
&lt;th&gt;原因&lt;/th&gt;
&lt;th&gt;修复&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cannot open file '/rpmbuild/SOURCES/LanguageList'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;systemd-run 服务环境缺 &lt;code&gt;HOME&lt;/code&gt;，&lt;code&gt;%{_topdir}&lt;/code&gt; 解析成 &lt;code&gt;/rpmbuild&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;启动时注入 &lt;code&gt;--setenv=HOME=/root&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;RPM build errors: 没有找到文件：.../COPYING&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;glibc-2.44 上游已移除顶层 &lt;code&gt;COPYING&lt;/code&gt; 文件&lt;/td&gt;
&lt;td&gt;&lt;code&gt;%license&lt;/code&gt; 移除 &lt;code&gt;COPYING&lt;/code&gt; 引用，保留 &lt;code&gt;COPYING.LIB LICENSES&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;brp 阶段的 &lt;code&gt;find/grep/xargs symbol lookup error&lt;/code&gt;（系统工具加载构建树内新 libc）为非致命警告，不影响产物。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​&lt;strong&gt;构建产物&lt;/strong&gt;​（15 个）：14 个二进制 RPM + 1 个 SRPM&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;二进制：glibc、glibc-common、glibc-devel、glibc-all-langpacks、glibc-locale-archive、glibc-locale-source、glibc-help、nscd、libnsl、nss_modules、glibc-nss-devel、glibc-debugutils、glibc-debuginfo、glibc-debugsource&lt;/li&gt;
&lt;li&gt;源码：&lt;code&gt;SRPMS/glibc-2.44-1.src.rpm&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;​&lt;strong&gt;验证&lt;/strong&gt;​：主包元数据 &lt;code&gt;glibc-2.44-1.x86_64&lt;/code&gt; 正确；&lt;code&gt;/lib64/libc.so.6&lt;/code&gt;、&lt;code&gt;/lib64/ld-linux-x86-64.so.2&lt;/code&gt;、&lt;code&gt;/lib64/libm.so.6&lt;/code&gt; 均在包内；产物清单与构建日志&amp;quot;已写至&amp;quot;完全一致。&lt;/p&gt;
&lt;h2&gt;EulerMaker（openEuler 2403）构建问题修复（2026-08-22）&lt;/h2&gt;
&lt;p&gt;在 EulerMaker 平台使用 openEuler 2403 构建时，&lt;code&gt;%install&lt;/code&gt; 阶段报 rpath 检查错误：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;ERROR 0020: file '/usr/lib64/gconv/IBM1162.so' contains a rpath referencing '..' of an absolute path [/usr/lib/gcc/x86_64-openEuler-linux/12/../../../../lib64/]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​&lt;strong&gt;根因​&lt;/strong&gt;​：glibc-2.44 链接 gconv 模块与 &lt;code&gt;sotruss-lib.so&lt;/code&gt; 等共享库时注入 &lt;code&gt;-Wl,-rpath&lt;/code&gt;，其中包含 gcc 默认库路径（&lt;code&gt;/usr/lib/gcc/.../12/../../../../lib64/&lt;/code&gt;，含 &lt;code&gt;..&lt;/code&gt; 非规范路径）；openEuler 2403 的 brp rpath 检查（ERROR 0020）拒绝此类路径导致 &lt;code&gt;%install&lt;/code&gt; 失败。spec 原有 &lt;code&gt;removeLoadPath()&lt;/code&gt; 仅匹配 &lt;code&gt;$ORIGIN&lt;/code&gt; 开头的 rpath（为 2.38 时代设计），未覆盖 gcc 路径 rpath。本地 25.09 构建不受影响（其 rpath 检查不致命）。&lt;/p&gt;
&lt;p&gt;​&lt;strong&gt;修复&lt;/strong&gt;​（提交 &lt;code&gt;7f07460&lt;/code&gt;）：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;改动&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;removeLoadPath()&lt;/code&gt; 条件&lt;/td&gt;
&lt;td&gt;由仅匹配 &lt;code&gt;$ORIGIN&lt;/code&gt; 扩展为清除任意 RPATH/RUNPATH（&lt;code&gt;$ORIGIN&lt;/code&gt; 情况保留 &lt;code&gt;findReliantLib&lt;/code&gt; 软链逻辑）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;清理范围&lt;/td&gt;
&lt;td&gt;由仅 &lt;code&gt;gconv/&lt;/code&gt; 子目录扩大至整个 &lt;code&gt;%{_libdir}&lt;/code&gt;（覆盖 &lt;code&gt;audit/sotruss-lib.so&lt;/code&gt;）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;​&lt;strong&gt;验证&lt;/strong&gt;​：本地重建后检查新包——253 个 gconv 模块及全部 277 个真实 ELF 文件均无 rpath；构建产物完整（15 个）。&lt;/p&gt;
&lt;h2&gt;EulerMaker %check 修复与构建成功（2026-08-22）&lt;/h2&gt;
&lt;p&gt;​&lt;strong&gt;问题&lt;/strong&gt;​：EulerMaker（&lt;code&gt;openeuler:24.03-lts-sp4-amd64&lt;/code&gt;）构建在 &lt;code&gt;%check&lt;/code&gt; 阶段失败，两次失败原因不同：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;​&lt;strong&gt;无 ​&lt;code&gt;-k&lt;/code&gt; ​中止&lt;/strong&gt;​：math/elf 子目录测试失败（openEuler 24.03 环境相关，本地 25.09 全部通过）导致 &lt;code&gt;make check&lt;/code&gt; 中止 → 顶层 &lt;code&gt;tests.sum&lt;/code&gt; 未生成 → &lt;code&gt;test -s tests.sum&lt;/code&gt; 在 &lt;code&gt;set -e&lt;/code&gt; 下失败 → &lt;code&gt;%check&lt;/code&gt; 退出&lt;/li&gt;
&lt;li&gt;​&lt;strong&gt;Summary 检查误判&lt;/strong&gt;​：加 &lt;code&gt;-k&lt;/code&gt; 后子目录测试失败时顶层 &lt;code&gt;tests&lt;/code&gt; target &lt;code&gt;not remade&lt;/code&gt; → &lt;code&gt;tests.sum&lt;/code&gt; 与 Summary 行均不生成 → 原 Summary 检查将测试失败误判为&amp;quot;测试套件构建失败&amp;quot;→ &lt;code&gt;exit 1&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;​&lt;strong&gt;修复&lt;/strong&gt;​（两个提交）：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;提交&lt;/th&gt;
&lt;th&gt;内容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;e5dfc32&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;make check&lt;/code&gt; 加 &lt;code&gt;-k&lt;/code&gt;（子目录测试失败不再中止顶层合并）；&lt;code&gt;test -s tests.sum&lt;/code&gt; 容忍缺失&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;3f0dd3b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;%check&lt;/code&gt; 重排中止逻辑：先汇总非通过项（&lt;code&gt;tests.sum&lt;/code&gt; 缺失时回退到各子目录 &lt;code&gt;subdir-tests.sum&lt;/code&gt;），仅当&amp;quot;无失败项可汇总 且 无 Summary 行&amp;quot;（测试套件整体未运行/构建失败）才判为致命&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;​&lt;strong&gt;验证&lt;/strong&gt;​：&lt;code&gt;rpmspec -P&lt;/code&gt; 解析、&lt;code&gt;%check&lt;/code&gt; 段 &lt;code&gt;bash -n&lt;/code&gt;、三场景逻辑模拟（EulerMaker 实况不中止 / 全部通过不中止 / 真构建失败仍致命）均通过。&lt;/p&gt;
&lt;p&gt;​&lt;strong&gt;结果&lt;/strong&gt;​：EulerMaker 平台 &lt;code&gt;rpmbuild&lt;/code&gt; 构建 RPM 成功（2026-08-22）。&lt;/p&gt;
</description><pubDate>Mon, 31 Aug 2026 18:03:04 +0800</pubDate></item><item><title>rsyslog 8.2312.0 重建修复记录</title><link>https://www.yjlink.cc/?id=3563</link><description>&lt;div style=&quot;box-sizing: border-box; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 0px; color: rgb(36, 41, 46); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255); margin-top: 0px !important;&quot;&gt;&lt;h1 class=&quot;md-h1&quot; id=&quot;H10&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239);&quot;&gt;rsyslog 8.2312.0 重建修复记录&lt;/h1&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px; margin-bottom: 0px !important;&quot;&gt;修复 glibc 2.44 升级后 &lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;rsyslogd SIGSEGV 崩溃循环&lt;/strong&gt;的完整工程归档&lt;/p&gt;&lt;/div&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H21&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;📑 目录&lt;/h2&gt;&lt;ul style=&quot;box-sizing: border-box; padding: 0px 0px 0px 2em; list-style-position: inherit; list-style-image: inherit; color: rgb(36, 41, 46); font-size: 16px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;一、项目简介&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;二、问题背景&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;三、根因分析&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;四、修复方案&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;五、验证结果&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;六、仓库结构&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;七、快速开始（重建步骤）&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;八、相关仓库&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;九、遗留事项&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;十、经验总结&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit;&quot;&gt;许可协议&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H22&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;一、项目简介&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;本仓库归档了 &lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;rsyslog 8.2312.0&lt;/strong&gt; 在 openEuler 2509（含 Kylin 组件）主机上，&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;因自编译 &lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;glibc 2.44&lt;/strong&gt; 升级引发的 &lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;rsyslogd SIGSEGV 崩溃循环&lt;/strong&gt; 的完整修复过程：&lt;/p&gt;&lt;ul style=&quot;box-sizing: border-box; padding: 0px 0px 0px 2em; list-style-position: inherit; list-style-image: inherit; color: rgb(36, 41, 46); font-size: 16px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;📦 发行版源码包（&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;src.rpm&lt;/code&gt;）、spec、上游源码与全部补丁&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;🔧 可复现的构建脚本（与 libfastjson 一致的 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;build_ldflags&lt;/code&gt;，保持 ABI 一致）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;📥 重建后的 RPM 产物&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;⚙️ 实际生效的配置文件（&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;rsyslog.conf&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;haproxy.conf&lt;/code&gt;、systemd 单元等）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;📄 问题根因、修复方案、验证结果&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote style=&quot;box-sizing: border-box; margin: 0px; padding: 0px 1em; background-color: rgb(250, 250, 250); border-left: 0.25em solid rgb(223, 226, 229); word-break: break-word; font-size: 16px; line-height: 30px; color: rgb(106, 115, 125); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px;&quot;&gt;依赖：必须先重建并安装 libfastjson（修复 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;modf&lt;/code&gt; IFUNC 预取崩溃），详见&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;micoder/libfastjson(#八相关仓库)。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H23&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;二、问题背景&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;升级 glibc 2.44 后，&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;rsyslog.service&lt;/code&gt; 陷入崩溃循环，每次重启后约 2 秒即再次崩溃：&lt;/p&gt;&lt;pre class=&quot; codetheme-tomorrownight language-javascript&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 16px; color: rgb(204, 204, 204); word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;rsyslog.service:&amp;nbsp;Main&amp;nbsp;process&amp;nbsp;exited,&amp;nbsp;code=dumped,&amp;nbsp;status=11/SEGV
rsyslogd:&amp;nbsp;Relink&amp;nbsp;`/usr/lib64/libfastjson.so.4&amp;#39;&amp;nbsp;with&amp;nbsp;`/usr/lib64/libm.so.6&amp;#39;&amp;nbsp;for&amp;nbsp;IFUNC&amp;nbsp;symbol&amp;nbsp;`modf&amp;#39;
rsyslogd[xxxxx]:&amp;nbsp;segfault&amp;nbsp;at&amp;nbsp;9f&amp;nbsp;ip&amp;nbsp;...&amp;nbsp;in&amp;nbsp;libm.so.6[46d52,...]&amp;nbsp;error&amp;nbsp;4&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;影响范围：&lt;/strong&gt;&lt;/p&gt;&lt;ul style=&quot;box-sizing: border-box; padding: 0px 0px 0px 2em; list-style-position: inherit; list-style-image: inherit; color: rgb(36, 41, 46); font-size: 16px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;系统日志服务不可用：&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;/var/log/messages&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;secure&lt;/code&gt;、&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;cron&lt;/code&gt; 等全部停写&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;journald 被崩溃信息刷屏（近 3 天 7018 条 err 日志几乎全是崩溃循环）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;堆积 &lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;33,473 个 coredump，占用 4.1GB&lt;/strong&gt; 磁盘（已清理，见第九节）&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H24&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;三、根因分析&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;崩溃的直接触发点是 &lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;libfastjson.so.4&lt;/strong&gt;，而非 rsyslog 本体：&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 16px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px; margin-bottom: 0px !important;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;rsyslogd -N1&lt;/code&gt; 配置测试即段错误（exit=139），gdb 回溯定位到&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;ld-linux 调用 libm.so.6 内 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;modf&lt;/code&gt; IFUNC 解析器时崩溃。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 16px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px; margin-bottom: 0px !important;&quot;&gt;反汇编 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;modf@@GLIBC_2.2.5&lt;/code&gt; 解析器（libm+0x46d40）：&lt;/p&gt;&lt;pre class=&quot; codetheme-tomorrownight language-javascript&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(204, 204, 204); word-spacing: normal; word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;46d44:&amp;nbsp;mov&amp;nbsp;&amp;nbsp;0xca285(%rip),%rax&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;取&amp;nbsp;GOT&amp;nbsp;槽&amp;nbsp;0x110fd0（_rtld_global_ro@GLIBC_PRIVATE）
46d52:&amp;nbsp;testb&amp;nbsp;$0x10,&amp;nbsp;0x9f(%rax)&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;&amp;lt;&amp;lt;&amp;lt;&amp;nbsp;%rax==NULL，读&amp;nbsp;0x9f&amp;nbsp;崩溃&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 16px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px; margin-bottom: 0px !important;&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;libfastjson.so.4 的 DT_NEEDED 只有 libc.so.6，缺少 libm.so.6&lt;/strong&gt;：&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;libc 也导出 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;modf&lt;/code&gt;（弱 IFUNC），链接期 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;--as-needed&lt;/code&gt; 因此丢弃了 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;-lm&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 16px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px; margin-bottom: 0px !important;&quot;&gt;运行时 libfastjson 的 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;modf&lt;/code&gt; 引用经&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;全局作用域预取&lt;/strong&gt;绑定到 libm 的 IFUNC，&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;该预取路径下解析器读取 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;_rtld_global_ro&lt;/code&gt; GOT 槽时为 NULL → SIGSEGV。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 16px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px; margin-bottom: 0px !important;&quot;&gt;对照实验：直接 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;gcc test.c -lm&lt;/code&gt; 调用 modf 正常（exit=0），证明 glibc 2.44&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;的 modf 本身没有坏，是&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;链接/预取方式&lt;/strong&gt;的问题。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;blockquote style=&quot;box-sizing: border-box; margin: 0px; padding: 0px 1em; background-color: rgb(250, 250, 250); border-left: 0.25em solid rgb(223, 226, 229); word-break: break-word; font-size: 16px; line-height: 30px; color: rgb(106, 115, 125); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px;&quot;&gt;修复方向由动态链接器直接给出：&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;“Relink libfastjson.so.4 with libm.so.6 for&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;IFUNC symbol modf”&lt;/strong&gt;。详细证据链见 &lt;span style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;REPORT.md&lt;/span&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H25&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;四、修复方案&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;保留 glibc 2.44，分两步重建：&lt;/p&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;步骤&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;仓库&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;内容&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;1️⃣&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;[micoder/libfastjson]&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;https://gitcode.com/micoder/libfastjson&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;重建 libfastjson：&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;build_ldflags&lt;/code&gt; 追加 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;-Wl,--no-as-needed -lm&lt;/code&gt;，DT_NEEDED 加入 libm.so.6&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;2️⃣&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;本仓库（rsyslog）&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;重建 rsyslog：使用一致的 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;build_ldflags&lt;/code&gt;，保持 ABI 一致性&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255);&quot;&gt;rsyslog 重建命令：&lt;/p&gt;&lt;pre class=&quot; codetheme-tomorrownight language-bash&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 16px; color: rgb(204, 204, 204); word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;rpmbuild&amp;nbsp;--rebuild&amp;nbsp;--nocheck&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--define&amp;nbsp;&amp;#39;dist&amp;nbsp;.oe2509&amp;#39;&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--define&amp;nbsp;&amp;#39;build_ldflags&amp;nbsp;-Wl,-z,relro&amp;nbsp;-Wl,-z,now&amp;nbsp;-specs=/usr/lib/rpm/generic-hardened-ld&amp;nbsp;-Wl,--no-as-needed&amp;nbsp;-lm&amp;#39;&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rsyslog-8.2312.0-8.oe2509.src.rpm&lt;/pre&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;要点&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;--define &amp;#39;dist .oe2509&amp;#39;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;保持 release 后缀与原发行版一致，&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;rpm -Uvh --replacepkgs&lt;/code&gt; 可同版本替换，RPM 数据库不产生版本回退&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;--nocheck&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;跳过 rsyslog 自身耗时的 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;make check&lt;/code&gt; 测试套件（10+ 分钟），最终以服务实际启动验证为准&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;版本号不变（&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;-8.oe2509&lt;/code&gt;）&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;仅二进制重新构建，配置与数据文件不受影响&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H26&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;五、验证结果&lt;/h2&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;验证项&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;修复前&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;修复后&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;rsyslogd -N1&lt;/code&gt; 配置测试&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;exit=139（SIGSEGV）&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;exit=0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;rsyslog.service 状态&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;崩溃循环（每 ~2s 重启）&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;active (running)&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;Main PID 稳定性&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;每次崩溃更换&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;30 秒观察保持不变&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;/var/log/messages&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;空（停写）&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;测试日志正常落盘&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;新增 coredump&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;每 ~2s 一个&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;无&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H27&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;六、仓库结构&lt;/h2&gt;&lt;pre class=&quot; codetheme-tomorrownight language-javascript&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 16px; color: rgb(204, 204, 204); word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;rsyslog/
├──&amp;nbsp;README.md&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;本文件（项目总览）
├──&amp;nbsp;REPORT.md&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;完整修复总结报告
├──&amp;nbsp;build.sh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;可复现构建脚本（含关键参数说明）
├──&amp;nbsp;SOURCES/
│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;rsyslog-8.2312.0.tar.gz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;上游源码包
│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;rsyslog-doc-8.2312.0.tar.gz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;上游文档源码包
│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;rsyslog.spec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;发行版&amp;nbsp;spec（未改动）
│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;*.patch&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;发行版携带的补丁（backport/bugfix）
│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;*.sh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;发行版附带脚本（时区检查、日志轮转等）
├──&amp;nbsp;SRPMS/
│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;rsyslog-8.2312.0-8.oe2509.src.rpm&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;发行版源码&amp;nbsp;RPM
├──&amp;nbsp;RPMS/
│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;rsyslog-8.2312.0-8.oe2509.x86_64.rpm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;重建后的主包（修复产物）
│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;rsyslog-help-8.2312.0-8.oe2509.noarch.rpm&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;帮助文档包
│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;rsyslog-{crypto,elasticsearch,gnutls,gssapi,hiredis,kafka,mmaudit,mmjsonparse,mmkubernetes,mmnormalize,mmsnmptrapd,mmtaghostname,mongodb,mysql,omamqp1,pgsql,rabbitmq,relp,snmp,udpspoof}-8.2312.0-8.oe2509.x86_64.rpm&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;20&amp;nbsp;个功能子包（模块产物）
└──&amp;nbsp;CONFIG/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;rsyslog.conf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;实际生效的主配置（/etc/rsyslog.conf）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;rsyslog.d/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;haproxy.conf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;附加配置（haproxy&amp;nbsp;日志）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;rsyslog.service&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;systemd&amp;nbsp;单元文件
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;rsyslog.sysconfig&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;sysconfig&amp;nbsp;配置&lt;/pre&gt;&lt;blockquote style=&quot;box-sizing: border-box; margin: 0px; padding: 0px 1em; background-color: rgb(250, 250, 250); border-left: 0.25em solid rgb(223, 226, 229); word-break: break-word; font-size: 16px; line-height: 30px; color: rgb(106, 115, 125); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px;&quot;&gt;说明：重建过程共生成 &lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;20 个功能子包&lt;/strong&gt;（mysql / mongodb / kafka / relp /&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;gnutls / elasticsearch 等模块），本次修复只需基础包（系统仅安装了基础包，&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;子包未安装），但全部子包产物已随本仓库归档，可按需安装。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H28&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;七、快速开始（重建步骤）&lt;/h2&gt;&lt;pre class=&quot; codetheme-tomorrownight language-bash&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 5px 10px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 16px; color: rgb(204, 204, 204); word-break: normal; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(45, 45, 45); max-width: 100%; border: 1px solid rgb(225, 228, 232); overflow: auto !important;&quot;&gt;#&amp;nbsp;0.&amp;nbsp;前置：先按&amp;nbsp;micoder/libfastjson&amp;nbsp;仓库重建并安装&amp;nbsp;libfastjson
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;（关键：DT_NEEDED&amp;nbsp;包含&amp;nbsp;libm.so.6，modf&amp;nbsp;IFUNC&amp;nbsp;直接绑定）

#&amp;nbsp;1.&amp;nbsp;环境准备（确保&amp;nbsp;source&amp;nbsp;仓库已启用）
dnf&amp;nbsp;repolist&amp;nbsp;--enabled&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;-i&amp;nbsp;source

#&amp;nbsp;2.&amp;nbsp;获取源码包并安装构建依赖
cd&amp;nbsp;/root/rpmbuild/SRPMS
dnf&amp;nbsp;download&amp;nbsp;--source&amp;nbsp;rsyslog
dnf&amp;nbsp;builddep&amp;nbsp;-y&amp;nbsp;rsyslog-8.2312.0-8.oe2509.src.rpm

#&amp;nbsp;3.&amp;nbsp;重建&amp;nbsp;RPM（--nocheck&amp;nbsp;跳过耗时测试；关键参数见&amp;nbsp;build.sh&amp;nbsp;注释）
rpmbuild&amp;nbsp;--rebuild&amp;nbsp;--nocheck&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--define&amp;nbsp;&amp;#39;dist&amp;nbsp;.oe2509&amp;#39;&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--define&amp;nbsp;&amp;#39;build_ldflags&amp;nbsp;-Wl,-z,relro&amp;nbsp;-Wl,-z,now&amp;nbsp;-specs=/usr/lib/rpm/generic-hardened-ld&amp;nbsp;-Wl,--no-as-needed&amp;nbsp;-lm&amp;#39;&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rsyslog-8.2312.0-8.oe2509.src.rpm
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
#&amp;nbsp;4.&amp;nbsp;安装重建后的基础&amp;nbsp;RPM（同版本替换）
cd&amp;nbsp;/root/rpmbuild/RPMS/x86_64rpm&amp;nbsp;-Uvh&amp;nbsp;--replacepkgs&amp;nbsp;rsyslog-8.2312.0-8.oe2509.x86_64.rpm

#&amp;nbsp;5.&amp;nbsp;验证
rsyslogd&amp;nbsp;-N1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;应&amp;nbsp;exit=0
systemctl&amp;nbsp;start&amp;nbsp;rsyslog&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;systemctl&amp;nbsp;is-active&amp;nbsp;rsyslog&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;应&amp;nbsp;active
logger&amp;nbsp;&amp;quot;verification&amp;quot;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;tail&amp;nbsp;-3&amp;nbsp;/var/log/messages&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;应恢复写入&lt;/pre&gt;&lt;blockquote style=&quot;box-sizing: border-box; margin: 0px; padding: 0px 1em; background-color: rgb(250, 250, 250); border-left: 0.25em solid rgb(223, 226, 229); word-break: break-word; font-size: 16px; line-height: 30px; color: rgb(106, 115, 125); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px; padding: 0px; color: rgb(37, 43, 58); font-weight: inherit; word-break: break-word; line-height: 28px; min-height: 28px;&quot;&gt;完整脚本见 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;build.sh&lt;/code&gt;，可直接执行。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H29&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;八、相关仓库&lt;/h2&gt;&lt;table width=&quot;872&quot;&gt;&lt;thead style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;仓库&lt;/th&gt;&lt;th style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229);&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;[micoder/libfastjson]&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;https://gitcode.com/micoder/libfastjson&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;libfastjson 1.2304.0 重建修复记录（本修复的前置依赖）&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(246, 248, 250); border-top: 1px solid rgb(198, 203, 209);&quot;&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;[micoder/glibc]&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;https://gitcode.com/micoder/glibc&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;box-sizing: border-box; margin: 0px; padding: 6px 13px; border-color: rgb(223, 226, 229); color: rgb(51, 51, 51);&quot;&gt;自编译 glibc 2.44 的构建工程（问题源头）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H210&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;九、遗留事项&lt;/h2&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;coredump 清理&lt;/strong&gt;：已删除 &lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;/var/lib/systemd/coredump/*&lt;/code&gt;（33,473 个文件，&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;/&gt;释放约 4GB 磁盘）。若生产环境需保留事故现场，可先归档再清理。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;openssh 10.5p1&lt;/strong&gt;：本机同为自编译（依赖新 glibc），当前 sshd 运行正常；&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;/&gt;若日后出现类似 IFUNC 崩溃，可套用本方案（&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;--no-as-needed -lm&lt;/code&gt;）重建。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;glibc 2.44 为无签名自编译包&lt;/strong&gt;：RPM 数据库层面建议保留 src.rpm 备份，&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;/&gt;避免后续 dnf 升级时被系统 glibc 意外覆盖造成版本错乱。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H211&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;十、经验总结&lt;/h2&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;自编译 glibc 替换系统 glibc 影响面极大&lt;/strong&gt;，IFUNC / symbol preemption 是&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;/&gt;最容易踩坑的路径；升级后必须全量回归常驻服务（日志、网络、数据库等）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;动态链接器的 “Relink X with Y for IFUNC symbol S” 警告是直接可用的修复&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;/&gt;指引&lt;/strong&gt;——把引用方与被引用库直接链接即可。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;排查手法沉淀&lt;/strong&gt;：&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;dmesg&lt;/code&gt; 定位段错误 → gdb 回溯 → 反汇编崩溃地址 →&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;/&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;readelf -d&lt;/code&gt; 检查 DT_NEEDED → 最小程序对照验证。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit;&quot;&gt;版本化 RPM 重建&lt;/strong&gt;（&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;--define &amp;#39;dist&amp;#39;&lt;/code&gt; + 同版本替换）可保证系统可回退、&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;/&gt;可审计，优于直接覆盖二进制。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr style=&quot;box-sizing: content-box; margin: 24px 0px; padding: 0px; height: 1px; background: rgb(225, 228, 232); border-width: 0px; border-style: none; border-color: currentcolor currentcolor rgb(238, 238, 238); border-image: none; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; white-space: normal;&quot;/&gt;&lt;h2 class=&quot;md-h2&quot; id=&quot;H212&quot; style=&quot;box-sizing: border-box; margin: 24px 0px 16px; padding: 0px 0px 0.3em; color: rgb(37, 43, 58); line-height: 1.25; border-bottom: 1px solid rgb(234, 236, 239); font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;a class=&quot;header-anchor&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;/a&gt;许可协议&lt;/h2&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: &amp;quot;Microsoft YaHei&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: rgb(255, 255, 255); margin-bottom: 0px !important;&quot;&gt;本仓库内容遵循上游项目的 &lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;GPLv3+ 与 ASL 2.0&lt;/strong&gt;（见 [rsyslog.spec]&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;SOURCES/rsyslog.spec&lt;/code&gt;&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;&lt;code style=&quot;box-sizing: border-box; margin: 0px 2px; padding: 2px 4px; font-family: Consolas, Monaco, &amp;quot;Andale Mono&amp;quot;, &amp;quot;Ubuntu Mono&amp;quot;, monospace; font-size: 1em; color: rgb(240, 141, 73); word-spacing: normal; word-break: break-all; overflow-wrap: normal; line-height: 1.5; text-shadow: none; tab-size: 4; hyphens: none; background: rgb(248, 248, 248); max-width: 100%; display: inline-block;&quot;&gt;License: (GPLv3+ and ASL 2.0)&lt;/code&gt;）。重建产物 RPM 均基于 openEuler 发行版源码包&lt;br style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: inherit; display: block;&quot;/&gt;构建，构建产物的许可遵循对应上游与发行版约定。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 31 Aug 2026 17:53:02 +0800</pubDate></item><item><title>pytcper与gotcper tcp网络调试工具助手</title><link>https://www.yjlink.cc/?id=3562</link><description>&lt;p style=&quot;box-sizing: border-box; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: -apple-system, HuaweiSans, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, STHeiti, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Microsoft JhengHei&amp;quot;, SimSun, sans-serif; background-color: rgb(255, 255, 255); margin: 16px 0px !important;&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-weight: bold; color: inherit; font-size: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-size: 14pt;&quot;&gt;pytcper与gotcper tcp网络调试助手&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: -apple-system, HuaweiSans, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, STHeiti, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Microsoft JhengHei&amp;quot;, SimSun, sans-serif; background-color: rgb(255, 255, 255); margin: 16px 0px !important;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-family: -apple-system, HuaweiSans, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, STHeiti, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Microsoft JhengHei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; color: rgb(59, 62, 85); background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;pytcper &lt;span style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #505A69;&quot;&gt;TCP网络调试助手：&lt;/span&gt;基于 Python3 编写的图形化 TCP 网络调试工具助手，支持图形化界面，支持客户端与服务器端，多编码发送，接收，广播指令。零第三方依赖，可跨平台运行，支持Windows / Linux / macOS&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; font-family: -apple-system, HuaweiSans, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, STHeiti, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Microsoft JhengHei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; color: rgb(59, 62, 85); background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;项目地址：&lt;a href=&quot;https://gitcode.com/micoder/pytcper&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; text-decoration: underline; color: rgb(45, 86, 177); font-size: inherit; font-weight: inherit;&quot;&gt;pytcper:基于 Python + tkinter 的跨平台 TCP 调试助手 - AtomGit&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p style=&quot;box-sizing: border-box; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: -apple-system, HuaweiSans, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, STHeiti, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Microsoft JhengHei&amp;quot;, SimSun, sans-serif; background-color: rgb(255, 255, 255); margin: 16px 0px !important;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #505A69;&quot;&gt;gotcper TCP网络调试助手：一个基于 Go 编写的图形化 &lt;span style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;TCP 网络调试工具助手&lt;/span&gt;，纯 Go 编译（CGO 关闭，无需 C/C++ 工具链），Windows 原生界面，零运行时依赖。&lt;span style=&quot;color: #3B3E55; font-family: -apple-system, HuaweiSans, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, STHeiti, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Microsoft JhengHei&amp;quot;, SimSun, sans-serif; font-size: 16px; background-color: #FFFFFF;&quot;&gt;支持客户端与服务器端，多编码发送，接收，广播指令。&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;可跨平台运行，支持Windows ， Linux。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; padding: 0px; color: rgb(37, 43, 58); font-size: 16px; word-break: break-word; line-height: 28px; min-height: 28px; white-space: normal; font-family: -apple-system, HuaweiSans, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, STHeiti, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Microsoft JhengHei&amp;quot;, SimSun, sans-serif; background-color: rgb(255, 255, 255); margin: 16px 0px 0px !important;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; color: #505A69;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; margin: 0px; padding: 0px;&quot;&gt;项目地址：&lt;a href=&quot;https://gitcode.com/micoder/gotcper&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; margin: 0px; padding: 0px; background-color: transparent; outline: none; text-decoration: underline; color: rgb(45, 86, 177); font-size: inherit; font-weight: inherit;&quot;&gt;gotcper:基于 Go + Walk 的图形化 TCP 调试助手项目 - AtomGit&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 25 Aug 2026 09:46:10 +0800</pubDate></item></channel></rss>