I have a bunch of servers, on which I run experiments using screen
. The procedure is the following :
ssh
to server XXX- launch
screen
- start experiments in a few tabs
- detach
screen
- disconnect from the server
While the experiments are running, I can easily find on which servers they are by ssh
ing to all servers and listing my running processes (using top
or ps
).
However, once the experiments are finished, how could I find on which servers I have a screen session opened (so that I can have a look at the output, relaunch them, etc.) ?
PS: my experiments do print their output to files, too… but this is not the point of my question.
Advertisement
Answer
To list all of the screen sessions for a user, run the following command as that user:
screen -ls
To see all screen sessions on a specific machine you can do:
ls -laR /var/run/screen/
I get this on my machine:
gentle ~ # ls -laR /var/run/screen/ /var/run/screen/: total 1 drwxrwxr-x 4 root utmp 96 Mar 1 2005 . drwxr-xr-x 10 root root 840 Feb 1 03:10 .. drwx------ 2 josh users 88 Jan 13 11:33 S-josh drwx------ 2 root root 48 Feb 11 10:50 S-root /var/run/screen/S-josh: total 0 drwx------ 2 josh users 88 Jan 13 11:33 . drwxrwxr-x 4 root utmp 96 Mar 1 2005 .. prwx------ 1 josh users 0 Feb 11 10:41 12931.pts-0.gentle /var/run/screen/S-root: total 0 drwx------ 2 root root 48 Feb 11 10:50 . drwxrwxr-x 4 root utmp 96 Mar 1 2005 ..
This is a rather brilliantly Unixy use of Unix Sockets wrapped in filesystem permissions to handle security, state, and streams.