背景 服务器上有个宝塔面板,跑着 BT-Panel 和 BT-Task 两个进程,占了 683M 磁盘。
但根本没用------服务器上跑的 Docker + Nginx 都是单独装的,宝塔只是个历史遗留的空壳。
想卸载,但担心:万一有隐藏依赖呢?删了服务会不会挂?
原因 卸载软件的正确姿势:先停,观察,再删。
很多人一上来就 rm -rf,结果发现某个服务依赖它,或者某个定时任务还在调它------服务直接挂。
优雅下线的三阶段:
| 阶段 | 动作 | 目的 |
|---|---|---|
| 1 | stop + disable |
停服务,禁自启,但文件不动 |
| 2 | 观察 1-2 天 | 确认没有隐藏依赖 |
| 3 | rm -rf |
彻底删除文件 |
| 这样出问题能立刻恢复------systemctl start 一下就回来。 | ||
| 解决 | ||
| 第一步:确认宝塔真的可以停 | ||
| 检查 1:系统服务是不是宝塔装的? |
bash
which nginx
dpkg -S /usr/sbin/nginx
预期输出:
bash
/usr/sbin/nginx
nginx: /usr/sbin/nginx
看到 nginx: /usr/sbin/nginx = apt 装的,跟宝塔无关。
如果输出是 dpkg: no path found → 说明是宝塔编译的,别动。
检查 2:宝塔目录下有哪些服务?
bash
ls /www/server/
预期:只有 panel、cron 这类面板自身目录。
如果出现 nginx、mysql、php → 说明宝塔装了实际服务,别卸。 第二步:停服务(可逆)
bash
sudo systemctl stop bt
sudo systemctl disable bt
sudo pkill -f "BT-Panel|BT-Task"
# 验证:应该无输出
sudo ps -ef | grep -i "BT-Panel|BT-Task" | grep -v grep
预期:ps 命令无任何输出------进程都停了。
第三步:清理宝塔的定时任务 宝塔会往 root crontab 里塞任务:
bash
sudo crontab -l
找这行:
javascript
51 12 * * * /www/server/cron/xxx >> /www/server/cron/xxx.log 2>&1
删掉它(保留腾讯云探针那行,不要误删):
bash
sudo crontab -l | grep -v "/www/server/cron" | sudo crontab -
sudo crontab -l # 验证宝塔那行没了
为什么要删:宝塔服务已停,这个 cron 跑的时候会报错------每天往日志里写一行失败记录。
第四步:观察 2 天 先别删文件,让服务器跑 2 天。
观察什么:
bash
# 1. Nginx 还正常吗
systemctl is-active nginx
curl -sI http://127.0.0.1:8081 | head -1
# 2. 所有容器还在跑吗
docker ps --format "table {{.Names}}\t{{.Status}}"
# 3. 系统日志有没有奇怪报错
sudo journalctl -u bt --since "2 days ago" 2>/dev/null | tail
都正常 → 进第五步。 第五步:删除文件
bash
sudo rm -rf /www/server
sudo rm -f /etc/init.d/bt /usr/bin/bt
sudo systemctl daemon-reload
# 验证
sudo du -sh /www 2>/dev/null || echo "✅ /www 已清理"
df -h /
预期:/www 不存在,磁盘多出 683M。 三个坑 坑 1:一上来就 rm -rf /www/server
万一有隐藏依赖(比如某个服务配置了 /www/server/nginx/conf),删了直接挂。必须先 stop + disable,观察 2 天。
坑 2:忘了清理 crontab
宝塔停止后,它的 cron 任务还在跑,每天报错。一定要清掉:
三个坑 坑 1:一上来就 rm -rf /www/server
万一有隐藏依赖(比如某个服务配置了 /www/server/nginx/conf),删了直接挂。必须先 stop + disable,观察 2 天。
坑 2:忘了清理 crontab
宝塔停止后,它的 cron 任务还在跑,每天报错。一定要清掉:
bash
sudo crontab -l | grep -v "/www/server/cron" | sudo crontab -
坑 3:systemctl disable bt 报错
报错 bt.service is not a native service, redirecting to systemd-sysv-install 是正常的------宝塔用的是老式 SysV 启动脚本,systemd 自动帮忙转译了。
验证是否真的禁用了:
bash
systemctl is-enabled bt
# 输出 disabled 就对了