我有一堆服务器,可以使用在服务器上运行实验screen。该过程如下:
screen
ssh
在实验运行期间,ssh通过查看所有服务器并列出正在运行的进程(使用top或ps),我可以轻松找到它们在哪些服务器上。
top
ps
但是,一旦实验完成,如何找到在哪个服务器上打开了屏幕会话(以便可以查看输出,重新启动它们,等等)?
PS:我的实验也将其输出也打印到文件中……但这不是我要问的重点。
要列出用户的所有屏幕会话,请以该用户身份运行以下命令:
screen -ls
要查看特定计算机上的所有屏幕会话,您可以执行以下操作:
ls -laR /var/run/screen/
我在我的机器上得到这个:
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 ..
这是Unixy对Unix Sockets的出色使用,Unix Sockets包装在文件系统权限中以处理安全性,状态和流。