vault backup: 2026-09-28 07:57:07
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
# Linux:删除目录内所有文件,保留目录结构(保留父目录、所有子文件夹,只删文件)
|
||||
|
||||
# Linux:删除目录内 \\*\\* 所有文件,保留目录结构(保留父目录、所有子文件夹,只删文件)
|
||||
|
||||
> 需求:只删文件,**目录本身全部保留**,不删除文件夹。
|
||||
>
|
||||
>
|
||||
|
||||
## 核心命令(find)
|
||||
|
||||
### 方式 1:直接执行(推荐,一行命令)
|
||||
|
||||
```bash
|
||||
# 将 /path/to/your_dir 替换为你的目标主目录
|
||||
find /path/to/your_dir -type f -delete
|
||||
```
|
||||
|
||||
- `-type f`:只匹配普通**文件**,不会匹配文件夹
|
||||
|
||||
- `-delete`:删除匹配到的文件,**所有子目录完整保留**
|
||||
|
||||
> ⚠️ 高危!先加 `-print` 预览要删哪些文件,确认无误再执行删除:
|
||||
>
|
||||
>
|
||||
|
||||
```bash
|
||||
# 预览,只打印,不会删除
|
||||
find /path/to/your_dir -type f -print
|
||||
```
|
||||
|
||||
### 兼容老版本 find(部分旧系统不支持 `-delete`)
|
||||
|
||||
```bash
|
||||
find /path/to/your_dir -type f -exec rm -f {} \;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 区分:还要删除软链接文件?
|
||||
|
||||
上面 `-type f` **不会删除符号链接**。
|
||||
如果希望同时删除普通文件 \+ 软链接:
|
||||
|
||||
```bash
|
||||
find /path/to/your_dir \( -type f -o -type l \) -delete
|
||||
```
|
||||
|
||||
## 不生效坑点说明
|
||||
|
||||
1. 不会删除隐藏文件?✅ `find` 默认会扫描 `.xxx` 隐藏文件,一并删除。
|
||||
|
||||
2. 不会删除文件夹,子目录全部原样保留。
|
||||
|
||||
3. 权限不足:前面加 `sudo`,注意风险。
|
||||
|
||||
---
|
||||
|
||||
# 写成小脚本 clear\_dir\_only\\\[\_files\.sh\]\(\_files\.sh\)
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
if [ $# -ne 1 ];then
|
||||
echo "用法: $0 目标目录"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TARGET="$1"
|
||||
|
||||
if [ ! -d "$TARGET" ];then
|
||||
echo "错误:$TARGET 不是有效目录"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "即将删除目录【$TARGET】下全部文件,保留目录结构"
|
||||
echo "预览待删除文件:"
|
||||
find "$TARGET" -type f -print
|
||||
|
||||
read -p "确认删除?输入 y 确认:" ans
|
||||
if [ "$ans" = "y" ];then
|
||||
find "$TARGET" -type f -delete
|
||||
echo "完成,仅删除文件,目录结构已保留"
|
||||
else
|
||||
echo "已取消操作"
|
||||
fi
|
||||
```
|
||||
|
||||
### 使用脚本
|
||||
|
||||
```bash
|
||||
chmod +x clear_dir_only_files.sh
|
||||
#传入要清理的目录
|
||||
./clear_dir_only_files.sh /data/audiobooks
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ❌不要用这些错误写法
|
||||
|
||||
```bash
|
||||
#错误!会把整个目录删掉
|
||||
rm -rf /xxx/*
|
||||
|
||||
#错误!会删除子目录
|
||||
find xxx -exec rm -rf {} \;
|
||||
```
|
||||
|
||||
### 补充:如果你想删掉目录下的**空文件夹**(额外需求)
|
||||
|
||||
> 只删空目录,已有文件的目录不动
|
||||
>
|
||||
>
|
||||
|
||||
```bash
|
||||
find /path/to/your_dir -type d -empty -delete
|
||||
```
|
||||
|
||||
> 重要提醒:操作前强烈建议先执行预览命令,确认列表,再真实删除,避免误删。
|
||||
>
|
||||
>
|
||||
|
||||
> (注:部分内容可能由 AI 生成)
|
||||
@@ -0,0 +1,131 @@
|
||||
# Mac开机启动优化\+冗余程序完整排查指南
|
||||
|
||||
# Mac 开机启动优化 \+ 冗余程序完整排查指南
|
||||
|
||||
Mac 开机慢、后台一堆自动加载软件,核心分**3 层排查**:可视化登录项(新手)、应用自带自启开关、底层隐藏启动代理 / 守护进程(顽固后台),附带判断哪些程序该删、临时快速测试方案。
|
||||
|
||||
## 一、基础优化:图形界面管理登录项(最简单)
|
||||
|
||||
### 方式 1:系统设置统一管理(Ventura 及新版 macOS)
|
||||
|
||||
1. 左上角苹果菜单 → **系统设置** → 通用 → **登录项与扩展**
|
||||
|
||||
2. 「登录时打开」列表:选中不需要自动弹出的软件,点下方 **减号 \-** 直接移除;
|
||||
|
||||
3. 下方**允许在后台运行**:关闭不需要常驻后台同步、更新的软件(Adobe 云、网盘、音乐软件等),大幅减少内存占用。
|
||||
|
||||
### 方式 2:Dock 快速关闭单个软件自启
|
||||
|
||||
Dock 右键软件图标 → **选项** → 取消勾选「登录时打开」。
|
||||
|
||||
### 临时测试:单次开机不加载所有自启程序
|
||||
|
||||
重启 Mac,在登录输入密码界面**按住 Shift 再回车**,桌面完全加载后松开 Shift;本次开机不会运行任何登录项,用来判断是不是自启软件拖慢开机。
|
||||
|
||||
## 二、第二层排查:软件自身内置自启开关
|
||||
|
||||
很多软件会绕过系统登录项,在自身设置里开启后台启动,仅删登录项没用:
|
||||
|
||||
1. 打开对应软件 → 顶部菜单栏「XX 软件」→ **偏好设置 / 设置**
|
||||
|
||||
2. 查找关键词:开机启动、登录自动运行、后台常驻、自动更新、开机弹窗,全部关闭。
|
||||
常见顽固软件:微信、QQ、迅雷、Adobe Creative Cloud、网盘、剪辑工具、输入法辅助程序。
|
||||
|
||||
## 三、深度排查:隐藏后台启动代理(底层冗余进程)
|
||||
|
||||
大量软件安装后会写入**LaunchAgents/LaunchDaemons**配置文件,不会显示在系统登录项界面,是开机慢、后台偷偷运行的元凶。
|
||||
|
||||
### 1\. 终端命令查看所有第三方后台服务
|
||||
|
||||
打开「终端」(应用程序 \- 实用工具),执行命令,过滤掉苹果自带系统进程,只显示第三方软件后台:
|
||||
|
||||
```bash
|
||||
# 列出所有第三方用户级启动代理
|
||||
launchctl list | grep -v com.apple
|
||||
```
|
||||
|
||||
输出里的 `com.adobe、com.tencent、com.google` 等都是第三方后台更新 / 常驻进程。
|
||||
|
||||
### 2\. 手动定位 plist 配置文件(3 个关键目录)
|
||||
|
||||
访达按 `Shift+Command+G`,分别粘贴以下路径查看启动配置文件:
|
||||
|
||||
1. **用户级(仅当前用户生效)**:`~/Library/LaunchAgents`
|
||||
|
||||
2. **系统全局用户代理**:`/Library/LaunchAgents`
|
||||
|
||||
3. **系统守护进程(登录前就运行)**:`/Library/LaunchDaemons`
|
||||
|
||||
文件名格式 `com.xxx.app.plist`,一眼识别对应软件:
|
||||
|
||||
- `com.adobe.*` Adobe 云后台更新
|
||||
|
||||
- `com.tencent.xinWeChat` 微信后台
|
||||
|
||||
- `com.google.keystone` Chrome 自动更新程序
|
||||
|
||||
- 已卸载软件残留 plist(最占资源,直接清理)
|
||||
|
||||
### 3\. 安全清理冗余启动配置(高级操作)
|
||||
|
||||
1. 不认识的文件**不要直接删除**,先拖到桌面备份;重启 Mac 无异常再彻底删除;
|
||||
|
||||
2. 终端彻底卸载并停止对应后台服务(示例,替换为你的文件路径):
|
||||
|
||||
```bash
|
||||
# 停止并卸载用户代理服务
|
||||
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.adobe.cloud.plist
|
||||
# 删除配置文件
|
||||
rm ~/Library/LaunchAgents/com.adobe.cloud.plist
|
||||
```
|
||||
|
||||
系统级 Daemon 需要加`sudo`管理员权限操作。
|
||||
|
||||
## 四、排查冗余内核扩展(Intel Mac 重点)
|
||||
|
||||
旧 Intel 电脑安装虚拟机、旧杀毒软件会遗留内核扩展,拖慢开机:
|
||||
|
||||
```bash
|
||||
# 查看第三方内核扩展
|
||||
kextstat | grep -v com.apple
|
||||
```
|
||||
|
||||
发现废弃虚拟机、旧杀毒驱动,用软件自带卸载工具彻底删除,不要只删文件。
|
||||
|
||||
## 五、判断标准:哪些启动程序可以关闭 / 删除
|
||||
|
||||
### ✅ 建议保留(开机必备)
|
||||
|
||||
输入法、安全杀毒、办公同步刚需工具、色彩管理(设计)、VPN(工作必须)。
|
||||
|
||||
### ❌ 全部可关闭(手动打开不影响使用)
|
||||
|
||||
网盘(百度网盘、iCloud 除外)、音乐播放器(网易云、Spotify)、聊天软件微信 / QQ、Adobe 创意云、浏览器后台更新、迅雷 / 下载工具、游戏平台、壁纸软件、桌面美化工具。
|
||||
|
||||
### ⚠️ 谨慎处理
|
||||
|
||||
系统驱动、打印机 / 外设工具、开发环境(开发者按需保留),不认识的进程先搜索文件名确认用途。
|
||||
|
||||
## 六、额外开机提速辅助优化
|
||||
|
||||
1. 减少登录项数量:普通办公用户控制在 3\-5 个以内;
|
||||
|
||||
2. 关闭无用登录窗口自动连接服务器;
|
||||
|
||||
3. 清理 Mac 存储空间,保证硬盘剩余 20% 以上;
|
||||
|
||||
4. 卸载长期不用软件(用官方卸载工具,避免残留 plist 后台文件);
|
||||
|
||||
5. 关闭不必要的系统扩展、输入法插件。
|
||||
|
||||
## 七、故障排查:删除后软件仍自动启动
|
||||
|
||||
1. 回到软件自身设置,关闭内置开机启动;
|
||||
|
||||
2. 前往 3 个 Launch 目录,删除该软件所有 plist 配置;
|
||||
|
||||
3. 终端执行`launchctl remove 服务名`彻底注销后台服务;
|
||||
|
||||
4. 重启 Mac 验证效果。
|
||||
|
||||
> (注:部分内容可能由 AI 生成)
|
||||
@@ -0,0 +1,135 @@
|
||||
# Nginx 反向代理配置
|
||||
|
||||
# Nginx 反向代理配置
|
||||
|
||||
> 前提说明
|
||||
>
|
||||
>
|
||||
|
||||
1. 假设域名:
|
||||
|
||||
- `abs.example.com` → 代理 Audiobookshelf \(ABS\),容器内部端口 `80`,宿主机端口 `13378`
|
||||
|
||||
- `ting.example.com` → 代理 Ting‑Reader,容器内部端口 `3000`,宿主机端口 `3000`
|
||||
|
||||
2. 使用 `certbot` 获取 SSL 证书;证书路径 `/etc/letsencrypt/live/你的域名/`
|
||||
|
||||
3. Nginx 与 docker 服务在同一台机器,后端地址写 `127.0.0.1:端口`;不在同一台则替换为对应内网 IP。
|
||||
|
||||
4. 两个服务都需要**websocket 支持**,否则网页端实时状态、播放进度同步会异常。
|
||||
|
||||
## 1)Audiobookshelf \([abs\.example\.com](https://abs.example.com)\) nginx 配置
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name abs.example.com;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name abs.example.com;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/abs.example.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/abs.example.com/privkey.pem;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X‑Real‑IP $remote_addr;
|
||||
proxy_set_header X‑Forwarded‑For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X‑Forwarded‑Proto $scheme;
|
||||
|
||||
# WebSocket 关键配置,ABS必须
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:13378;
|
||||
proxy_buffering off;
|
||||
client_max_body_size 100M;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 2)Ting‑Reader \([ting\.example\.com](https://ting.example.com)\) nginx 配置
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name ting.example.com;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name ting.example.com;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/ting.example.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/ting.example.com/privkey.pem;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X‑Real‑IP $remote_addr;
|
||||
proxy_set_header X‑Forwarded‑For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X‑Forwarded‑Proto $scheme;
|
||||
|
||||
# Ting‑Reader 同样需要WebSocket
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_buffering off;
|
||||
client_max_body_size 100M;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 单域名子路径模式(不推荐,简单给示例)
|
||||
|
||||
> 不建议子路径部署(如 `https://xxx.com/abs`、`https://xxx.com/ting`),两个程序对子路径兼容都一般,容易出现静态资源、websocket 异常。优先用**子域名**。
|
||||
>
|
||||
>
|
||||
|
||||
## 使用步骤
|
||||
|
||||
1. 将配置写入 nginx sites‑available 下,软链接到 sites‑enabled
|
||||
|
||||
2. 检查配置语法:
|
||||
|
||||
```bash
|
||||
nginx -t
|
||||
```
|
||||
|
||||
3. 重载 nginx
|
||||
|
||||
```bash
|
||||
systemctl reload nginx
|
||||
```
|
||||
|
||||
## 重要踩坑提示
|
||||
|
||||
1. **容器绑定地址**:docker 端口映射必须是 `0.0.0.0:xxxx:xxxx`,不要只绑定 \[127\.0\.0\.1\]\(127\.0\.0\.1\)(如果你 nginx 不在本机)。
|
||||
|
||||
2. 不要直接把容器端口暴露公网,全部走 nginx 443 HTTPS。
|
||||
|
||||
3. ABS 第三方客户端(希声 Still、AudioBooth 等)填写地址时直接填完整 `https://abs.example.com`,不要带端口。
|
||||
|
||||
4. Ting‑Reader 网页 / PWA 访问也直接用 `https://ting.example.com`。
|
||||
|
||||
5. 如果你使用 Nginx Proxy Manager \(NPM\),不需要手写上面配置,网页界面填后端地址,开启 Websocket 开关即可。
|
||||
|
||||
## NPM(Nginx Proxy Manager)界面填写要点
|
||||
|
||||
- ABS:Forward Hostname/IP `127.0.0.1`,Port `13378`,勾选 **WebSockets Support**
|
||||
|
||||
- Ting‑Reader:Forward Hostname/IP `127.0.0.1`,Port `3000`,勾选 **WebSockets Support**
|
||||
|
||||
- 申请 SSL 证书,强制 HTTPS。
|
||||
|
||||
> 如果你需要,我可以顺带给一份两者的 Caddy v2 配置(更简单,自动 https)。
|
||||
>
|
||||
>
|
||||
|
||||
> (注:部分内容可能由 AI 生成)
|
||||
@@ -0,0 +1,26 @@
|
||||
# WPvivid迁移后固定链接重写规则问题及解决方案
|
||||
|
||||
太好了!能解决就很棒👍,顺便给你讲清楚背后原理,以后遇到同类问题一眼明白:
|
||||
WPvivid 迁移时完整导入数据库里的固定链接配置,但**不会主动通知服务器刷新 WordPress 的重写规则缓存**。
|
||||
点击「保存更改」这个动作,WordPress 会重新生成重写规则:
|
||||
|
||||
- Apache 环境:自动更新`.htaccess`
|
||||
|
||||
- Nginx 环境:刷新内部 rewrite 路由缓存
|
||||
|
||||
### 后续两个小建议规避隐患
|
||||
|
||||
1. **不要立刻忘了测试**
|
||||
随便点开几篇文章、页面、分类、标签链接全部访问一遍,确认没有零星 404;浏览器务必 Ctrl\+F5 强制刷新,避开旧缓存。
|
||||
|
||||
2. 如果你后续再次迁移网站
|
||||
使用 WPvivid 还原完成后,**第一时间先去保存一次固定链接**,提前规避这个 404 坑。
|
||||
|
||||
### 额外延伸小坑预警
|
||||
|
||||
如果之后你更换服务器(Apache ↔ Nginx 互转):
|
||||
哪怕保存固定链接,依旧 404,那就是缺少对应 web 服务伪静态规则,直接参考上次给你的规则配置即可。
|
||||
|
||||
有后续网站迁移、WP 优化、故障问题随时再来问!
|
||||
|
||||
> (注:部分内容可能由 AI 生成)
|
||||
@@ -0,0 +1,175 @@
|
||||
# WordPress迁移后首页正常、内页404 Not Found(WPvivid迁移完成)完整排查方案
|
||||
|
||||
# WordPress 迁移后首页正常、内页 404 Not Found(WPvivid 迁移完成)完整排查方案
|
||||
|
||||
## 核心现象总结
|
||||
|
||||
首页能打开、数据库 / 文件迁移成功;**文章、页面链接访问 404**,95% 场景是【伪静态(固定链接)\+ 服务器环境不匹配】,其次是 Nginx/Apache 规则缺失、\.htaccess 没迁移、权限问题。
|
||||
|
||||
## 一、优先最高概率方案(先试这个,大部分人直接解决)
|
||||
|
||||
### 方案 1:重新刷新 WordPress 固定链接(最常见!)
|
||||
|
||||
> WPvivid 迁移数据库后,固定链接配置存入数据库,但新服务器不会自动重写 rewrite 规则缓存。
|
||||
>
|
||||
>
|
||||
|
||||
1. 登录 WP 后台:**设置 → 固定链接**
|
||||
|
||||
2. **不需要修改任何选项**,直接拉到页面底部,点击【保存更改】
|
||||
|
||||
3. 保存动作会自动刷新 WordPress 重写规则、重建 rewrite 缓存
|
||||
|
||||
4. 清除网站缓存(WP 缓存插件、服务器缓存、浏览器 Ctrl\+F5)测试内页
|
||||
|
||||
> ⚠️ 重点:哪怕你固定链接格式和旧站一模一样,**必须点一次保存更改**!
|
||||
>
|
||||
>
|
||||
|
||||
---
|
||||
|
||||
## 二、如果上面无效,区分你的服务器 Web 服务(Apache / Nginx)
|
||||
|
||||
### 情况 A:服务器是 Apache(宝塔 Apache、cPanel、虚拟主机大多是 Apache)
|
||||
|
||||
WordPress 伪静态依靠 `.htaccess` 文件
|
||||
|
||||
1. 检查网站根目录是否存在 **`.htaccess`**
|
||||
|
||||
- WPvivid 备份默认会打包\.htaccess,但部分主机 / 压缩环境会忽略隐藏文件!
|
||||
|
||||
2. 查看文件内容,标准 WordPress \.htaccess 代码:
|
||||
|
||||
```apache
|
||||
# BEGIN WordPress
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
||||
RewriteBase /
|
||||
RewriteRule ^index\.php$ - [L]
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule . /index.php [L]
|
||||
</IfModule>
|
||||
# END WordPress
|
||||
```
|
||||
|
||||
3. 两个关键检查:
|
||||
1)主机是否开启 `mod_rewrite` 模块(很多新装 Apache 默认没开!)
|
||||
2)网站目录权限允许`.htaccess`生效(AllowOverride All,宝塔站点配置里调整)
|
||||
|
||||
> 常见坑:旧主机支持\.htaccess,新主机关闭了 AllowOverride,规则不执行 → 内页 404
|
||||
>
|
||||
>
|
||||
|
||||
### 情况 B:服务器是 Nginx(宝塔 Nginx、阿里云、腾讯云服务器默认)
|
||||
|
||||
**Nginx 不读取\.htaccess!这是高频踩坑点!**
|
||||
WPvivid 迁移过来的\.htaccess 完全无效,必须手动在站点配置添加 WP 伪静态规则。
|
||||
|
||||
#### 标准 WordPress Nginx 伪静态(永久链接非朴素格式使用)
|
||||
|
||||
```nginx
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
```
|
||||
|
||||
操作步骤(宝塔面板举例):
|
||||
|
||||
1. 站点设置 → 配置文件
|
||||
|
||||
2. 在`server {}`内部插入上面这段规则
|
||||
|
||||
3. 保存,**重载 Nginx 配置**
|
||||
|
||||
4. 再次去 WP 后台【固定链接】点保存更改
|
||||
|
||||
> 坑:很多人从 Apache 主机迁移到 Nginx,只迁移文件,忘记添加 Nginx 伪静态,直接 404!
|
||||
>
|
||||
>
|
||||
|
||||
## 三、WPvivid 迁移专属特殊问题排查(插件迁移特有 bug)
|
||||
|
||||
1. **站点地址(URL)自动替换是否完整?**
|
||||
WPvivid 迁移时有【替换域名】功能,如果替换不彻底会引发路由异常
|
||||
后台 → 设置 → 常规
|
||||
检查:
|
||||
|
||||
- WordPress 地址(URL)
|
||||
|
||||
- 站点地址(URL)
|
||||
两个地址必须是**新域名,不能残留旧域名**
|
||||
|
||||
👉 修复方案(如果地址错乱):
|
||||
方法 1:WPvivid 工具里再次执行【数据库搜索替换】,旧域名 → 新域名
|
||||
方法 2:或者安装 **Better Search Replace** 全局清理数据库旧网址
|
||||
|
||||
> 注意:不要只改后台设置,数据库文章、选项表残留旧域名也会干扰 rewrite
|
||||
>
|
||||
>
|
||||
|
||||
2. 子目录部署问题
|
||||
旧网站如果是 `domain.com/blog`,新站放在根目录;或者反过来,目录结构变化,固定链接、RewriteBase 不匹配直接 404。
|
||||
|
||||
## 四、进阶排查手段(上面无效再操作)
|
||||
|
||||
### 1\. 测试固定链接格式定位问题
|
||||
|
||||
进入 设置→固定链接,临时切换为 **朴素格式(?p=123)**
|
||||
|
||||
- 如果朴素格式链接能正常打开:
|
||||
✅ 证明:PHP、数据库、网站运行正常,**纯粹是伪静态规则缺失 / 失效**,聚焦上面 Apache/Nginx 规则修复
|
||||
|
||||
- 如果朴素格式依然 404:
|
||||
❌ 不是伪静态问题!问题在文件路径、网站根目录、程序权限、Nginx/Apache 根目录配置错误
|
||||
|
||||
### 2\. 文件权限检查
|
||||
|
||||
网站目录文件权限推荐:
|
||||
|
||||
- 文件夹:755
|
||||
|
||||
- 文件:644
|
||||
若权限过严,服务器无法访问 PHP 文件,也会出现异常 404。
|
||||
|
||||
### 3\. 关闭 CDN、缓存测试
|
||||
|
||||
新站点如果接入 CDN,缓存了错误 404 响应;先暂停 CDN,清除所有缓存(WP Rocket/W3 Total Cache、服务器 opcache)。
|
||||
|
||||
### 4\. 禁用插件冲突测试
|
||||
|
||||
极少数情况:重定向插件(Redirection、Yoast SEO)、安全插件缓存了旧路由
|
||||
重命名插件文件夹 `wp-content/plugins` → `plugins.bak`,临时全部禁用,测试内页。
|
||||
|
||||
## 五、最简排查顺序(照着一步步执行,效率最高)
|
||||
|
||||
1. WP 后台【设置→固定链接】直接保存更改 ✅(第一步必做)
|
||||
|
||||
2. 切换固定链接为朴素链接,判断是不是伪静态问题
|
||||
|
||||
3. 判断服务器是 Apache 还是 Nginx:
|
||||
|
||||
- Apache:检查\.htaccess \+ mod\_rewrite \+ AllowOverride All
|
||||
|
||||
- Nginx:添加 wordpress 伪静态规则,重载服务
|
||||
|
||||
4. 核对【WordPress 地址、站点地址】是否全部为新域名,清理数据库旧域名
|
||||
|
||||
5. 清除全部缓存、CDN 缓存
|
||||
|
||||
6. 全部插件临时禁用排除冲突
|
||||
|
||||
## 补充:宝塔用户高频踩坑提醒
|
||||
|
||||
1. 宝塔 Nginx 站点,不要直接复制 Apache 的\.htaccess 指望生效;
|
||||
|
||||
2. 宝塔新建站点默认不会自带 WP 伪静态,需要手动添加或在【伪静态】选项框选择 WordPress;
|
||||
|
||||
3. 迁移后如果开启了【防跨站】,部分环境偶尔干扰路径访问,可以临时关闭测试。
|
||||
|
||||
如果你告诉我两个信息,我可以直接给你对应可用的配置代码:
|
||||
① 服务器环境:Apache / Nginx(是否宝塔面板)
|
||||
② 当前固定链接使用的格式(例如 /% postname%/)
|
||||
|
||||
> (注:部分内容可能由 AI 生成)
|
||||
Binary file not shown.
@@ -0,0 +1,142 @@
|
||||
# macOS 取消/停止/彻底删除后台服务(launchctl)
|
||||
|
||||
# macOS 取消 / 停止 / 彻底删除后台服务(launchctl)
|
||||
|
||||
macOS 的后台服务分两类:
|
||||
|
||||
1. **LaunchAgent 用户服务**:仅当前登录用户运行,路径 `~/Library/LaunchAgents/`
|
||||
|
||||
2. **LaunchDaemon 系统服务**:开机就运行、所有用户生效,路径 `/Library/LaunchDaemons/`
|
||||
|
||||
> ⚠️ 禁止修改 `/System/Library/` 下系统自带服务(com\.apple\.\*),会系统崩溃。
|
||||
>
|
||||
>
|
||||
|
||||
## 一、先找到目标服务(必做第一步)
|
||||
|
||||
### 1\. 列出所有运行中的服务
|
||||
|
||||
```bash
|
||||
# 全部服务
|
||||
launchctl list
|
||||
# 过滤指定软件(替换 iscsictl/zerotier/xxx)
|
||||
launchctl list | grep -i iscsi
|
||||
```
|
||||
|
||||
输出第一列是 PID(有数字代表正在运行),第三列是**服务 label**(如 `com.iscsi.iscsid`)。
|
||||
|
||||
### 2\. 查找服务 plist 配置文件
|
||||
|
||||
```bash
|
||||
# 全局搜索iscsi相关plist
|
||||
find /Library ~/Library -name "*iscsi*.plist"
|
||||
```
|
||||
|
||||
## 二、3 种操作力度:临时停止 / 永久禁用 / 彻底删除
|
||||
|
||||
### 方式 1:临时停止当前运行的服务(重启后恢复)
|
||||
|
||||
```bash
|
||||
# 格式 launchctl stop 服务label
|
||||
launchctl stop com.iscsi.iscsid
|
||||
```
|
||||
|
||||
### 方式 2:永久禁用(不删除文件,重启也不会自启,推荐临时取消)
|
||||
|
||||
#### 旧版命令 unload \-w(兼容所有 macOS)
|
||||
|
||||
```bash
|
||||
# 用户级Agent(无需sudo)
|
||||
launchctl unload -w ~/Library/LaunchAgents/xxx.plist
|
||||
|
||||
# 系统级Daemon(必须sudo)
|
||||
sudo launchctl unload -w /Library/LaunchDaemons/com.iscsi.iscsid.plist
|
||||
```
|
||||
|
||||
`-w` = write,写入禁用标记,永久不开机自启。
|
||||
|
||||
#### 新版 macOS 10\.11\+ 标准命令 disable
|
||||
|
||||
```bash
|
||||
# 用户服务禁用
|
||||
launchctl disable gui/$(id -u)/com.iscsi.iscsid
|
||||
# 系统服务禁用
|
||||
sudo launchctl disable system/com.iscsi.iscsid
|
||||
```
|
||||
|
||||
恢复启用把 `disable` 改成 `enable` 即可。
|
||||
|
||||
### 方式 3:彻底取消 \+ 删除服务(完全清除,再也不会启动)
|
||||
|
||||
完整流程(以 iscsi 服务举例):
|
||||
|
||||
1. 停止运行
|
||||
|
||||
```bash
|
||||
sudo launchctl stop com.iscsi.iscsid
|
||||
```
|
||||
|
||||
2. 从系统服务列表移除
|
||||
|
||||
```bash
|
||||
sudo launchctl bootout system /Library/LaunchDaemons/com.iscsi.iscsid.plist
|
||||
# 用户服务用这条:
|
||||
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/xxx.plist
|
||||
```
|
||||
|
||||
3. 删除硬盘上的配置文件(根治)
|
||||
|
||||
```bash
|
||||
# 系统服务
|
||||
sudo rm -f /Library/LaunchDaemons/com.iscsi.iscsid.plist
|
||||
# 用户服务
|
||||
rm -f ~/Library/LaunchAgents/xxx.plist
|
||||
```
|
||||
|
||||
4. 强制杀掉残留进程
|
||||
|
||||
```bash
|
||||
pkill -f iscsid
|
||||
```
|
||||
|
||||
## 三、针对你之前 iSCSI iscsictl 服务实操示例
|
||||
|
||||
```bash
|
||||
# 1. 查看iscsi服务
|
||||
launchctl list | grep iscsi
|
||||
# 2. 临时停止
|
||||
sudo launchctl stop com.iscsi.iscsid
|
||||
# 3. 永久禁用开机自启
|
||||
sudo launchctl unload -w /Library/LaunchDaemons/com.iscsi.iscsid.plist
|
||||
# 4. 彻底删除服务(不再使用iSCSI时执行)
|
||||
sudo launchctl bootout system /Library/LaunchDaemons/com.iscsi.iscsid.plist
|
||||
sudo rm -f /Library/LaunchDaemons/com.iscsi.iscsid.plist
|
||||
pkill -f iscsid
|
||||
```
|
||||
|
||||
## 四、常见问题
|
||||
|
||||
1. **文件无法删除 Operation not permitted**
|
||||
文件加了系统锁定 `schg`,先解锁:
|
||||
|
||||
```bash
|
||||
sudo chflags noschg /xxx/xxx.plist
|
||||
```
|
||||
|
||||
再执行删除命令。
|
||||
|
||||
2. **stop 后立刻自动重启**
|
||||
说明只停止没卸载,必须执行 `unload -w` 或 `bootout` 取消自启。
|
||||
|
||||
3. **提示 could not find specified service**
|
||||
plist 路径写错,先用 `find` 命令确认文件真实路径。
|
||||
|
||||
## 快速总结
|
||||
|
||||
- 只想临时关掉:`launchctl stop label`
|
||||
|
||||
- 永久不开机自启(保留文件):`unload -w` / `launchctl disable`
|
||||
|
||||
- 彻底删除服务(完全取消):`bootout` \+ `rm plist` \+ 杀进程
|
||||
|
||||
> (注:部分内容可能由 AI 生成)
|
||||
Reference in New Issue
Block a user