基本上我有一個遠端螢幕會話,我希望自動重新附加到它。
ssh host -t screen -x thesessionname
這工作正常,但如果會話由於某種原因終止,我希望在下次連接時重新創建它。-R
的標誌screen
是幾乎完美的:
ssh host -t screen -R -S thesessionname
..但是如果會話已經附加,則會建立第二個會話(就像-R
簡單地查找第一個分離的會話一樣,如果沒有找到,則會建立一個新會話)
有沒有一種方法可以讓該-R
標誌也查找附加會話,並且僅在thesessionname
不存在時建立一個新會話?
如果這不容易做到,那麼當螢幕會話消失時,我該如何自動重新建立螢幕會話?也許是透過 cron 運行的腳本查找指定的會話,如果它不存在則創建它?
答案1
告訴 screen 要更加堅持嘗試:
-D -R
Attach here and now. In detail this means: If a session is run-
ning, then reattach. If necessary detach and logout remotely
first. If it was not running create it and notify the user.
This is the author's favorite.
因此,將兩者結合起來,您應該得到解決方案(“-DR”相當於“-D -R”):
screen -DR <yoursession>
此外,您還可以使用以下命令查看正在執行的會話:
screen -ls
答案2
一些不錯的選擇。首先是我最喜歡的:
screen -x -R
這將附加到第一個可用的螢幕會話(如果連接了另一個連接則共用),如果根本沒有螢幕會話,則啟動新的螢幕會話。
screen -d -RR
相關文件說“重新附加會話,並在必要時分離或建立它。如果有多個會話可用,請使用第一個會話。”基本上,雙 R 使其尋找要附加的第一個會話。
screen -D -RR
“就在此時此地。無論這意味著什麼,就去做吧。”將分離並遠端登出任何其他附加會話,並附加到它可以附加的第一個會話。基本上,執行附加到現有會話所需的任何操作,如果那裡沒有任何內容,則建立一個新會話。
第一個(-x -R) 是最不可能引起問題的(不會斷開您的其他連接),但如果有任何東西可以附加,則普通總是附加到某些東西,如果沒有任何東西可以附加,則創建一些東西。
答案3
我用
screen -dRRS sessname
我不希望我在另一個 shell 上的整個登入資訊像-D
以前那樣被刪除,而且我絕對不希望-x
.