使用 dtach 进行带内 apt-get 升级
问题
我的 SSH 会话在执行带内升级时终止。
环境
- Cumulus Linux,所有版本
- 带内 SSH 连接:通过逻辑端口(网桥或 bond)或交换机 (swp) 端口而不是管理 eth0 端口进行升级
根本原因
涉及某些软件包的升级,例如 switchd 或 FRR/Quagga,可能会导致与交换机的带内 SSH 连接暂时丢失(通常为一两分钟)。
解决方案
当进行带内升级时,NVIDIA 建议使用 dtach
或 screen
命令运行升级。这样可以在连接中断的情况下重新连接到升级过程。
使用 dtach
cumulus@switch$ sudo apt-get update
cumulus@switch$ dtach -c /tmp/apt-get -z sudo apt-get upgrade
位置
/tmp/apt-get
是稍后重新连接的套接字-z
禁用挂起键挂起dtach
在重新连接到交换机后重新连接到 apt-get
进程
cumulus@switch$ dtach -a /tmp/apt-get
如果 dtach
套接字文件不存在,如以下错误所示
cumulus@switch$ dtach -a /tmp/apt-get
dtach: /tmp/apt-get: No such file or directory
则升级已完成。在重新启动(如果需要)之前,您可以查看 /var/log/apt/term.log
中的升级结果
cumulus@switch$ less /var/log/apt/term.log
使用 screen
启动一个 screen
会话,指定一个名称以便稍后重新连接
screen -S apt-get
在新的 screen
会话中,继续升级过程
cumulus@switch$ sudo apt-get update
cumulus@switch$ sudo apt-get upgrade
在 重新连接 到 交换机 后 重新连接 到 apt-get
进程
screen -r apt-get