Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Basically I have a remote screen session, which I wish to automatically reattach to.. Currently I'm doing this by with the following command (as an iTerm bookmark, or an alias)

ssh host -t screen -x thesessionname

This works fine, but if the session dies for whatever reason, I'd like it to be recreated when I next connect. The -R flag for screen is almost perfect:

ssh host -t screen -R -S thesessionname

..but if the session is already attached, a second session gets made (as -R simple looks for the first detached session, if none are found it creates a new one)

Is there a way to make the -R flag look for attached sessions also, and only create a new one if thesessionname doesn't exist?

If this is not easily doable, how could I automatically recreate the screen session when it dies? Perhaps a script run via cron that looks for the named session, creating it should it not exist?

share|improve this question
add comment

3 Answers

up vote 16 down vote accepted

Tell screen to be a bit more persistent about trying:

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

So combine the two and you should have your solution:

screen -D -R -S <yoursession>

Additionally and useful to know, you can view running sessions with:

screen -ls
share|improve this answer
2  
Perfect, screen -x -R -S main is what I ended up using (works the same without the forced-detach), thanks! –  dbr Jul 9 '09 at 16:53
add comment

I use

screen -dRRS sessname

I don't want my entire login on the other shell dropped, like -D does, and I definitely don't want the multi-attach mode of -x.

share|improve this answer
add comment

A few good options. First, my favorite:

screen -x -R

That will attach to the first screen session available (sharing if another connection is connected), and if there are no screen sessions at all, start a new one.

screen -d -RR

Docs for that say "Reattach a session and if necessary detach or create it. Use the first session if more than one session is available." Basically, the double-R makes it look for the first session to attach to.

screen -D -RR

"Attach here and now. Whatever that means, just do it." Will detach and remotely logout any other attached sessions and attach to the first session it can. Basically, does whatever it needs to do to attach to an existing session, and creates a new one if there's nothing there.

The very first (-x -R) is the least likely to cause problems (won't detach your other connection) but just plain always attaches to something if there's anything to attach to and creates something if there's nothing to attach to.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.