I have a bunch of servers, on which I run experiments using screen. The procedure is the following :
sshto 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 sshing 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.