ssh断线导致宝塔安装中断的根本原因是sighup信号杀死前台运行的install.sh进程;应先用screen -ls找回残留session或清理残留状态后再进screen/tmux重装。

SSH断线导致宝塔安装中断,根本原因是进程被SIGHUP杀死
宝塔面板安装脚本(install.sh)默认在前台运行,一旦SSH连接意外断开,系统会向该会话所有进程发送SIGHUP信号,导致安装进程直接退出——这不是网络超时或下载失败,而是进程被主动终止。单纯重试安装只会重复卡在相同位置(比如解压、编译PHP、写入配置等),因为残留状态不一致。
用screen恢复中断安装最稳妥
screen在大多数Linux发行版中预装,且对宝塔安装这类长时任务兼容性最好。关键不是“新开一个screen”,而是**找回已存在的、被断连但仍在后台运行的session**:
- 执行
screen -ls,查看是否有类似12345.install(数字为PID)的dead或attached session - 若显示
There is a screen on ... (Dead ???),说明进程已死,跳过;若显示(Attached)或(Dead ???)但PID仍存在,先用ps aux | grep install.sh确认进程是否还在 - 如果进程还在(如看到
/bin/bash ./install.sh),直接运行screen -r尝试重新附着;若提示There is no screen to be resumed,说明session元数据损坏,但进程可能还在——此时不要kill,先检查/www/server/panel/install/下日志(如install.pl.log)确认当前卡点 - 若进程已消失,用
screen -S btinstall新建会话,再执行安装命令:curl -o install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
tmux重连更灵活,但需注意宝塔脚本的终端兼容性
tmux 的 reattach-to-user-namespace 或旧版本终端检测有时会让宝塔安装脚本误判为非交互环境,导致卡在「请按回车继续」或权限确认环节。解决方法很具体:
- 启动前先运行
export TERM=xterm-256color,再执行tmux new -s bt - 安装命令前加
script -qec "bash install.sh" /dev/null,绕过部分tty检测逻辑 - 若已断线,用
tmux ls查看session,用tmux attach -t bt重连;若提示no sessions但ps aux | grep install有残留,说明tmux server已退出,进程大概率也被kill了 - 不推荐在tmux中使用
Ctrl+B d后台detach再关SSH——宝塔某些版本会因stdout被重定向而停止输出,看似卡住,实则仍在后台跑,需用tail -f /www/server/panel/install/install.pl.log确认进度
安装中途断线后,别急着重跑,先清理再进screen/tmux
二次执行安装脚本常报错:「端口被占用」「目录非空」「MySQL初始化失败」,这基本是上次中断留下的半成品。必须手动干预:
- 停掉残留服务:
bt stop(如果命令可用),否则用pkill -f 'nginx\|python\|mysql'+lsof -i :8888清端口 - 删安装痕迹:
rm -rf /www/server/panel /www/server/php /www/server/mysql(保留/www/wwwroot和网站数据) - 清yum/apt缓存(尤其CentOS 7的
python-pip冲突):yum clean all && rm -rf /var/cache/yum - 最后才进
screen或tmux,执行安装——否则新session也扛不住残留状态的干扰
真正麻烦的不是断线本身,而是中断点不可见:宝塔安装日志分散在/tmp、/www/server/panel/install/、stdout三处,且部分步骤静默执行。每次重试前,务必用tail -n 50 /www/server/panel/install/install.pl.log确认上一次到底停在哪一行。










