重新連接或建立命名螢幕會話? (或持續的螢幕會話)

重新連接或建立命名螢幕會話? (或持續的螢幕會話)

基本上我有一個遠端螢幕會話,我希望自動重新附加到它。

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.

相關內容