重新附加或创build一个命名的屏幕会话? (或持久屏幕会话)

基本上我有一个远程屏幕会话,我想自动重新连接到..目前,我通过以下命令(作为一个iTerm书签或别名)

ssh host -t screen -x thesessionname 

这工作正常,但如果会议因为任何原因死亡,我希望它在我下次连接时重新创build。 screen-R标志几乎是完美的:

 ssh host -t screen -R -S thesessionname 

..但是如果会话已经连接,第二个会话被取得(因为-R简单寻找第一个分离的会话,如果没有发现它创build一个新的)

有没有办法让-R标志也查找连接的会话,只有创build一个新的,如果thesessionname不存在?

如果这不是一件容易的事情,我怎么能自动重新创build屏幕会话,当它死亡? 也许一个脚本运行通过cron查找命名的会话,创build它应该不存在?

告诉屏幕试图更持久:

 -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. 

所以结合这两者,你应该有你的解决scheme(“-DR”相当于“-D -R”):

 screen -DR <yoursession> 

另外,有用的知道,你可以查看运行会话:

 screen -ls 

几个很好的select。 首先,我的最爱:

 screen -x -R 

这将附加到可用的第一个屏幕会话(如果连接了另一个连接,则共享),如果根本没有屏幕会话,则启动一个新会话。

 screen -d -RR 

对于这样的文档,请参阅“重新附加会话,并在必要时分离或创build该会话。如果有多个会话可用,请使用第一个会话”。 基本上,双R使它寻找第一届会议附加。

 screen -D -RR 

“现在就附上,无论如何,只要做就行。” 将分离并远程注销任何其他连接的会话,并附加到它可以的第一个​​会话。 基本上,不pipe需要做什么来附加到现有的会话,并创build一个新的,如果没有什么。

第一个(-x -R)是最不可能导致问题的(不会分离你的其他连接),但是如果有任何东西要附加,只是简单的总是附加到某个东西上,并创build一些东西,如果没有附加的东西。

我用

 screen -dRRS sessname 

我不希望我的整个login在其他的shell下降,像-D ,我绝对不希望-x的多重连接模式。