宝塔面板不原生支持磁盘不足自动停站,需通过自定义方案实现:一、计划任务+Shell脚本调用命令停站;二、Nginx配置+flag文件返回503维护页;三、df检测+本地API接口停站。

如果您发现网站在磁盘空间耗尽后仍持续运行并导致MySQL崩溃或面板异常,宝塔面板本身不提供原生的“磁盘不足自动暂停网站”功能。该行为需通过自定义脚本与计划任务组合实现。以下是三种可独立生效的技术方案:
一、使用宝塔计划任务+Shell脚本监控磁盘并停站
该方法通过定时检测根分区或/www所在分区使用率,超过阈值时调用宝塔API或命令行工具主动停止指定站点服务。
1、登录宝塔面板,进入【计划任务】→【添加计划任务】。
2、任务类型选择【Shell脚本】,执行周期设为【每5分钟】。
3、脚本内容粘贴以下代码(请将your_site_name替换为实际站点域名,如example.com):
df -h | grep '/$' | awk '{print $5}' | sed 's/%//g' | while read used; do if [ $used -gt 90 ]; then /www/server/panel/pyenv/bin/python /www/server/panel/class/ && /www/server/panel/pyenv/bin/python /www/server/panel/class/ stop your_site_name; fi; done
4、点击【添加任务】并确认启用。
二、通过Nginx配置实现请求级拦截(伪暂停)
此方案不真正关闭站点服务,而是在Nginx层面返回统一维护页面,避免新请求写入日志或上传文件,从而遏制磁盘进一步增长。
1、进入宝塔面板【网站】→ 找到目标站点 → 点击【设置】→【配置文件】。
2、在server { }块内顶部插入以下配置段:
if ( -f /www/stop_flag ) { return 503; }
3、创建触发文件:touch /www/stop_flag(手动触发)或由监控脚本生成。
4、在【网站】→【默认页面】中上传一个503.html维护页,并确保Nginx已启用503错误页重定向。
三、结合系统级df检测与宝塔API调用停站
利用宝塔v7.8+开放的本地API接口,在检测到磁盘超限时向面板发送停站指令,具备更高可靠性与权限控制能力。
1、确保宝塔面板已开启本地API:进入【面板设置】→【API接口】→ 开启【允许本地请求】。
2、新建脚本文件:/www/scripts/disk_stop.sh,内容如下:
#!/bin/bash
USED=$(df /www | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $USED -gt 92 ]; then
curl -X POST "http://127.0.0.1:8888/api/site/stop" \
-H "Content-Type: application/json" \
-d '{"siteName":"your_site_name"}'
fi
3、赋予执行权限:chmod +x /www/scripts/disk_stop.sh。
4、在【计划任务】中添加Shell任务,执行命令为:/www/scripts/disk_stop.sh,周期设为【每3分钟】。










