一尘不染

如何列出正在运行的屏幕会话?

linux

我有一堆服务器,可以使用在服务器上运行实验screen。该过程如下:

  1. ssh 到服务器XXX
  2. 发射 screen
  3. 在几个标签中开始实验
  4. 分离 screen
  5. 与服务器断开连接

在实验运行期间,ssh通过查看所有服务器并列出正在运行的进程(使用topps),我可以轻松找到它们在哪些服务器上。

但是,一旦实验完成,如何找到在哪个服务器上打开了屏幕会话(以便可以查看输出,重新启动它们,等等)?

PS:我的实验也将其输出也打印到文件中……但这不是我要问的重点。


阅读 205

收藏
2020-06-03

共1个答案

一尘不染

要列出用户的所有屏幕会话,请以该用户身份运行以下命令:

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包装在文件系统权限中以处理安全性,状态和流。

2020-06-03