如何在 Linux 登入時自動啟動 Screen 會話
幾天前,我們已經看到如何在每次登錄 Linux 系統(無論是本地還是通過 SSH 遠程登錄)時自動啟動 Tmux 會話。今天,我們將看到如何在登錄時自動啟動 Linux 上的 Screen 會話。自動啟動 Screen 會話在通過 SSH 運行長時間運行的過程時非常有幫助。如果因任何原因失去網絡連接,該過程將繼續在遠程系統的 Screen 會話中運行,並且當網絡恢復時,你可以重新連接到它。
在 Linux 登入時自動啟動 Screen 會話
要在 Linux 上自動啟動 Screen 會話,請編輯您 Linux 系統的 ~/.bash_profile 或 ~/.bashrc 文件:
$ nano ~/.bash_profile如果上述檔案不存在,就直接建立它。
並在其中添加以下幾行:
if [[ -z "$STY" ]]; then
screen -xRR default
fi在這裡,我們使用了 -x 旗標來附加到未分離的 screen 會話。而 -RR 旗標則嘗試恢復它找到的最新(以創建時間計算)的已分離 screen 會話。
注意: 如果你使用 Zsh shell,請將以上內容添加到 ~/.zshrc 檔案中。
保存並關閉檔案。登出並重新登入系統。您將進入一個名為 ‘default’ 的新 Screen 會話。
現在,在 Screen 會話中啟動任何進程,然後按 Ctrl+a 再按 d 將其分離。即使網路連線中斷,該進程仍會在 Screen 會話中繼續運行。一旦網路連線恢復,你可以再次 SSH 進入遠端系統,你會看到該工作仍在運行!!
看看以下的動畫示範:
讓我澄清一下我剛才在上面的輸出中做了什麼。
- 我從本地系統通過 SSH 連接到我的遠程 Ubuntu 伺服器。一個名為「default」的新 Screen 會話會自動啟動。
- 在 Screen 會話中,我運行一個命令(例如 watch grep "cpu MHz" /proc/cpuinfo)來監控 CPU 速度。
- 然後,我透過按下 Ctrl+a 和 d 來脫離會話。
- 然後,我使用 "screen -ls" 指令列出 Screen 會話,並退出 SSH 會話。
- 最後,我通過 SSH 重新連接到遠端系統,並確認進程是否在 Screen 會話中持續運行且沒有任何中斷。
希望你能理解。
要停止自動啟動 Screen 會話,只需從您的遠端系統的 ~/.bashrc 或 ~/.bash_profile 文件中刪除先前添加的行。
