我有一堆服务器,我在上面用屏幕运行实验。操作步骤如下:

ssh到服务器XXX 启动屏幕 在几个标签开始实验 分离的屏幕 从服务器断开连接

当实验正在运行时,我可以通过对所有服务器进行sshing并列出我正在运行的进程(使用top或ps)来轻松地找到它们在哪些服务器上。

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

PS:我的实验也把它们的输出打印到文件中…但这不是我问题的重点。


命令屏幕-list可能是你想要的。

看那个男人


我不太确定你的问题,但如果你真正想要的是列出当前打开的屏幕会话,请尝试:

screen -ls

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

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

这是一个相当出色的Unix使用,将Unix Sockets包装在文件系统权限中,以处理安全性、状态和流。


所以你是在用屏幕让实验在后台运行,还是什么?如果是这样,为什么不直接在后台启动呢?

./experiment &

如果你问如何通知我所做的工作,如何将实验与邮件命令连接在一起?

./experiment && echo "the deed is done" | mail youruser@yourlocalworkstation -s "job on server $HOSTNAME is done"

很多人已经指出了这一点

$ screen -ls

会列出屏幕会话。

这是另一个可能对你有用的技巧。

如果您在.bashrc . xml文件的最后一行添加以下命令 文件,然后它将自动重新连接到您的 登录时屏幕会话。

screen -d -r

希望对你有用。


虽然joshperry的回答是正确的,但我发现它没有告诉你屏幕名(你用-t选项设置的),这实际上是你用来识别会话的。 (当然,这不是他的错,那是屏幕的缺陷)

这就是为什么我使用这样的脚本:ps auxw|grep -i screen|grep -v grep


在大多数情况下,屏幕-RRx $username/就足够了:)

如果你仍然想列出所有的屏幕,那么输入以下内容 脚本在你的路径,并称之为屏幕或任何你喜欢:

#!/bin/bash
if [[ "$1" != "-ls-all" ]]; then
    exec /usr/bin/screen "$@"
else
    shopt -s nullglob
    screens=(/var/run/screen/S-*/*)
    if (( ${#screens[@]} == 0 )); then
        echo "no screen session found in /var/run/screen"
    else
        echo "${screens[@]#*S-}"
    fi
fi

它的行为和屏幕完全一样,除了显示所有屏幕会话, 当把选项-ls-all作为第一个参数时。


 For windows system

 Open putty 
 then login in server

如果你想在控制台看到屏幕,那么你必须写命令

 Screen -ls

如果你必须访问屏幕,那么你必须使用下面的命令

 screen -x screen id

在命令行中写入PWD以检查当前所在的文件夹


ps x | grep屏幕

如果您使用了该命令,可以查看该屏幕正在运行什么

screen -A -m -d php


您可以使用以下命令。

screen -list

(or)

screen -R

简单的指南来记住…

screen -创建一个屏幕

screen - List -列出所有分离的(正在运行的)屏幕及其屏幕id。

在这幅图中

6764.分- 1. v1091330

是屏幕ID。

screen -x [screen id] -连接/连接到特定的运行屏幕。

在屏幕中按Ctrl + D -终止/停止屏幕运行。

Ctrl + A,然后在屏幕中按D -从屏幕上分离而不干扰它。

killall screen -分离或终止所有屏幕。