我如何重新连接到一个独立的mosh会话?
如何重新连接到分离的mosh会话或以其他方式摆脱
Mosh: You have a detached Mosh session on this server (mosh [XXXX]).
即什么是相当于什么
screen -D -R
或者可能
screen -wipe
而且,这个答案在哪里可以find文档?
出于安全原因,您不能重新连接,请参阅https://github.com/keithw/mosh/issues/394
要终止分离的会话,请使用该消息中显示的PID号码(即“XXXX”部分)。例如,如果您看到 –
Mosh: You have a detached Mosh session on this server (mosh [12345]).
并且可以运行这个命令:
kill 12345
另外,要closures所有 mosh连接,您可以:
kill `pidof mosh-server`
请注意,如果您目前通过mosh连接,则最后一条命令也会与您断开连接。
令我惊讶的是,我使用CRIU( https://criu.org )来检查点,并重新启动一个mosh客户端,它工作。
令人震惊的。
find你的mosh-client的PID:
$ ps -ef | grep mosh
然后按照他们的说明安装CRIU。
然后,检查点是这样的:
$ mkdir检查点
$ sudo ./criu dump -D checkpoint -t PID –shell-job
然后,恢复它:
$ sudo ./criu restore -D checkpoint –shell-job
而且,在那里。 你的mosh客户端回来了。
但是需要注意的是,如果您的笔记本电脑重新启动(这是我们所要保护的内容的重点),mosh使用monotonic
时钟来跟踪客户端的时间,这在重新启动时不起作用。 然而,如果你的笔记本电脑只是平坦的崩溃,它将无法正常工作,因为序列号将与检查点的版本不同步(二进制将恢复,但通信将停止)。
为了解决这个问题,你需要告诉mosh停止这样做,并下载mosh源代码。 然后,编辑这个文件:
cd mosh
vim configure.ac
然后,searchGETTIME
并注释掉该行。
然后做:
autoreconf#或./autogen.sh如果你刚刚克隆它的第一次
。/configuration
使
进行安装
之后,您的CRIU检查点mosh客户端会话将在重新启动后继续。
(很明显,你需要写些东西来定期检查检查点,这对读者来说是一个练习)。
作为Varta答案的补充,我使用以下命令closures除当前连接之外的所有mosh连接:
pgrep mosh-server | grep -v $(ps -o ppid --no-headers $$) | xargs kill
我意识到这是一个旧的post,但是有一个非常简单的解决scheme,正如Keith Winstein,mosh作者所build议的: https : //github.com/mobile-shell/mosh/issues/394
“首先,如果你希望能够附加到来自多个客户端的会话(或者在客户端死亡之后),你应该使用screen或者tmux。Mosh是SSH的替代品(在某些情况下),而不是屏幕。许多Mosh用户将它与屏幕一起使用,就像这样。“
场景:我通过moshlogin到远程服务器。 然后我运行屏幕,并在屏幕会话中运行一个进程,例如htop。 我失去了连接(笔记本电脑电池死亡,失去networking连接等)。 我通过mosh再次连接,并在服务器上获取该消息,
Mosh:你在这台服务器上有一个Mosh会话(mosh [XXXX])。
我所要做的就是杀掉之前的mosh会话
杀死XXXX
并重新连接到仍然存在的屏幕会话 。
屏幕-r
现在,htop(或任何正在运行的进程)就像没有中断一样重新运行。这对于运行升级或其他进程,如果突然中断将使服务器处于杂乱,未知状态特别有用。 我认为你可以做同样的tmux,虽然我还没有尝试过。 我相信这是Annihilannic和eskhool的build议。
我在服务器上使用mosh结合tmux,以确保我的会话在客户端由于某种原因而死亡的情况下持续存在,例如强制重启。
PS或者你可以继续使用屏幕,如果这是你的偏好。