宝塔面板优雅下线:先 stop 再 disable 再 rm

0 阅读3分钟

背景 服务器上有个宝塔面板,跑着 BT-Panel 和 BT-Task 两个进程,占了 683M 磁盘。

但根本没用——服务器上跑的 Docker + Nginx 都是单独装的,宝塔只是个历史遗留的空壳。

想卸载,但担心:万一有隐藏依赖呢?删了服务会不会挂?

原因 卸载软件的正确姿势:先停,观察,再删。

很多人一上来就 rm -rf,结果发现某个服务依赖它,或者某个定时任务还在调它——服务直接挂。

优雅下线的三阶段:

阶段动作目的
1stop + disable停服务,禁自启,但文件不动
2观察 1-2 天确认没有隐藏依赖
3rm -rf彻底删除文件
这样出问题能立刻恢复——systemctl start 一下就回来。
解决
第一步:确认宝塔真的可以停
检查 1:系统服务是不是宝塔装的?
which nginx
dpkg -S /usr/sbin/nginx

预期输出:

/usr/sbin/nginx
nginx: /usr/sbin/nginx

看到 nginx: /usr/sbin/nginx = apt 装的,跟宝塔无关。

如果输出是 dpkg: no path found → 说明是宝塔编译的,别动。

检查 2:宝塔目录下有哪些服务?

ls /www/server/

预期:只有 panel、cron 这类面板自身目录。

如果出现 nginx、mysql、php → 说明宝塔装了实际服务,别卸。 第二步:停服务(可逆)

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 里塞任务:

sudo crontab -l

找这行:

51 12 * * * /www/server/cron/xxx >> /www/server/cron/xxx.log 2>&1

删掉它(保留腾讯云探针那行,不要误删):

sudo crontab -l | grep -v "/www/server/cron" | sudo crontab -
sudo crontab -l    # 验证宝塔那行没了

为什么要删:宝塔服务已停,这个 cron 跑的时候会报错——每天往日志里写一行失败记录。

第四步:观察 2 天 先别删文件,让服务器跑 2 天。

观察什么:

# 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

都正常 → 进第五步。 第五步:删除文件

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 任务还在跑,每天报错。一定要清掉:

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 自动帮忙转译了。

验证是否真的禁用了:

systemctl is-enabled bt
# 输出 disabled 就对了