如何使用screen解决ssh断连训练停止的问题
screen是一个强大的终端多路复用器,允许你在一个SSH会话中运行多个终端任务,并且即使SSH连接中断,这些任务也能继续运行。 这对长时间运行的任务或训练任务非常有用,如果在这样的任务中SSH链接断开,没有screen,你会丢失对任务的控制,而有了screen,你可以在链接恢复后接着控制之前的任务。 下面是如何使用screen来运行并管理你的任务:
- 创建一个新的
screen会话:screen -S mysession在这里,-S参数后面的mysession是你给这个新会话起的名字,你可以用任何你喜欢的名字。 - 在这个会话中,你可以运行你的训练代码,比如
python train.py。这会跟你平时在终端中运行你的代码一样。 - 如果你需要在任务运行的同时断开SSH连接,你可以按下
Ctrl+A,然后按下D,这会断开你的screen会话,但你的任务会在后台继续运行。 - 你可以随时重新连接到你的
screen会话,在你的SSH会话中输入:shell screen -r mysession就可以回到名为mysession的screen会话。这里的-r代表re-attach,意为重新连接。 - 如果你完成了你的任务,并且想要结束
screen会话,你可以在screen会话中输入:shell exit或者按下Ctrl+A,然后按下K,然后按Y来确认。这会结束你的screen会话。 这样,即使SSH连接被断开,你也可以确保你的训练任务得以继续,并在连接恢复后查看任务的进度。
以下是基本的操作方法:
- 创建新的
screen会话:
screen -S sessionname
这里的 sessionname 是你对新会话的自定义名字。
- 断开
screen会话:
Ctrl+a, d
这将暂时使你与当前的 screen 会话断开连接(不是关闭会话),并返回到 SSH 终端。
- 列出正在运行的
screen会话:
screen -ls
这将列出当前所有的 screen 会话。
- 重新连接到断开的
screen会话:
screen -r sessionname
这里的 sessionname 是你之前创建时为 screen 会话设置的名字。
- 在
screen会话中切换到下一个窗口:
Ctrl+a, n
如果你在一个 screen 会话中打开了多个窗口,你可以用这个快捷键在它们之间切换。
- 在
screen会话中切换到上一个窗口:
Ctrl+a, p
这是向后切换窗口的快捷键。
- 创建新的窗口:
Ctrl+a, c
你可以在一个 screen 会话中打开很多窗口。
8. 终止 screen 会话:
首先退出所有的 shell,然后 `screen` 会话就会自动结束。你也可以在会话中直接执行 `exit` 命令或按下 `Ctrl+d` 来结束 `screen` 会话。