如何使用screen解決ssh斷連訓練停止的問題

waferen發表於2024-03-11

screen是一個強大的終端多路複用器,允許你在一個SSH會話中執行多個終端任務,並且即使SSH連線中斷,這些任務也能繼續執行。 這對長時間執行的任務或訓練任務非常有用,如果在這樣的任務中SSH連結斷開,沒有screen,你會丟失對任務的控制,而有了screen,你可以在連結恢復後接著控制之前的任務。 下面是如何使用screen來執行並管理你的任務:

  1. 建立一個新的screen會話: screen -S mysession 在這裡,-S引數後面的mysession是你給這個新會話起的名字,你可以用任何你喜歡的名字。
  2. 在這個會話中,你可以執行你的訓練程式碼,比如python train.py。這會跟你平時在終端中執行你的程式碼一樣。
  3. 如果你需要在任務執行的同時斷開SSH連線,你可以按下Ctrl+A,然後按下D,這會斷開你的screen會話,但你的任務會在後臺繼續執行。
  4. 你可以隨時重新連線到你的screen會話,在你的SSH會話中輸入: shell screen -r mysession 就可以回到名為mysessionscreen會話。這裡的-r代表re-attach,意為重新連線。
  5. 如果你完成了你的任務,並且想要結束screen會話,你可以在screen會話中輸入: shell exit 或者按下Ctrl+A,然後按下K,然後按Y來確認。這會結束你的screen會話。 這樣,即使SSH連線被斷開,你也可以確保你的訓練任務得以繼續,並在連線恢復後檢視任務的進度。

以下是基本的操作方法:

  1. 建立新的 screen 會話:
   screen -S sessionname

這裡的 sessionname 是你對新會話的自定義名字。

  1. 斷開 screen 會話:
   Ctrl+a, d

這將暫時使你與當前的 screen 會話斷開連線(不是關閉會話),並返回到 SSH 終端。

  1. 列出正在執行的 screen 會話:
   screen -ls

這將列出當前所有的 screen 會話。

  1. 重新連線到斷開的 screen 會話:
   screen -r sessionname

這裡的 sessionname 是你之前建立時為 screen 會話設定的名字。

  1. screen 會話中切換到下一個視窗:
   Ctrl+a, n

如果你在一個 screen 會話中開啟了多個視窗,你可以用這個快捷鍵在它們之間切換。

  1. screen 會話中切換到上一個視窗:
   Ctrl+a, p

這是向後切換視窗的快捷鍵。

  1. 建立新的視窗:
   Ctrl+a, c

你可以在一個 screen 會話中開啟很多視窗。
8. 終止 screen 會話:

首先退出所有的 shell,然後 `screen` 會話就會自動結束。你也可以在會話中直接執行 `exit` 命令或按下 `Ctrl+d` 來結束 `screen` 會話。

相關文章