web-dev-qa-db-ja.com

実行中のスクリーンセッションを一覧表示する方法

私はscreenを使って実験を行うたくさんのサーバーを持っています。手順は次のとおりです。

  1. サーバーXXXへのssh
  2. screenを起動
  3. いくつかのタブで実験を始める
  4. screenを切り離す
  5. サーバーから切断する

実験の実行中に、すべてのサーバーにsshingして、実行中のプロセスを一覧表示することで(topまたはpsを使用して)、どのサーバーにいるのかを簡単に確認できます。

しかし、実験が終了したら、どのセッションでスクリーンセッションを開いているのかを知ることができます(出力を見たり、再起動したりすることができるように)。

シモンズ:私の実験もファイルにそれらの出力を印刷します...しかし、これは私の質問のポイントではありません。

200
Wookai

ユーザーのすべてのスクリーンセッションを一覧表示するには、そのユーザーとして次のコマンドを実行します。

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ソケットのかなり鮮やかな使用法です。

371
joshperry

コマンドscreen -listはあなたが望むものです。

man を参照してください

19
Zoredache

Joshperryの答えは正しいのですが、スクリーン名(-tオプションで設定したもの)を教えてくれるわけではないことに非常に煩わしいと思います。これが実際にセッションを識別するために使うものです。 (彼のせいではない、もちろん、それはスクリーンの欠陥です)

私が代わりにこのようなスクリプトを使うのはそのためです。ps auxw|grep -i screen|grep -v grep

13
o0'.

私はあなたの質問について本当によくわかりません、しかしあなたが本当に欲しいのがリスト現在開かれているスクリーンセッションだけであるならば、試みてください:

screen -ls
6
skinp
 For windows system

 Open PuTTY 
 then login in server

コンソールで画面を見たい場合は、コマンドを書く必要があります。

 Screen -ls

あなたが画面にアクセスする必要があるなら、あなたは以下のコマンドを使用する必要があります

 screen -x screen id

コマンドラインにPWDを入力して、現在どのフォルダにいるのかを確認します。

6
Ankit jain

ほとんどの場合、screen -RRx $username/で十分です:)

それでもすべての画面を一覧表示したい場合は、次のスクリプトをパスに入れて、それをscreenという名前で好きな名前にします。

#!/bin/bash
if [[ "$1" != "-ls-all" ]]; then
    exec /usr/bin/screen "[email protected]"
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オプションを指定すると、すべてのスクリーンセッションを表示することを除いて、screenとまったく同じように動作します。

3
ObiWahn

複数の人々はすでにそれを指摘しています

$ screen -ls

スクリーンセッションを一覧表示します。

これはあなたにとって役に立つかもしれない別のトリックです。

サーバxxxの。bashrcファイルの最後の行に次のコマンドを追加すると、ログイン時に自動的にスクリーンセッションに再接続されます。

screen -d -r

あなたがそれが有用であることを願ってください。

3
samurai

ps x | grep SCREEN

あなたがコマンドを使用した場合にそのスクリーンが何を実行しているかを見るため

screen -A -m -d php make_something.php

0
theworlddecoded