処理中の画面セッションを見つける方法

処理中の画面セッションを見つける方法

私はスクリーンプログラムを広く使用する。毎日セッションを確立するのにかかる時間を短縮することで、多くの役に立ちます。しかし、今では画面が8つ以上なので、どの画面を見ているのか忘れてしまうことがあります。私が使用しているスクリーンセッションの名前を見つける方法はありますか? screen -lsはすべてのスクリーンセッションをリストします。

たとえば、1日の終わりに現在アクティブなすべての画面セッションを分離する方法はありますか?

答え1

昔、私はこの単純なシェルスクリプトをクローンジョブとして使用していましたが、あなたが言ったように、最終分析で

#!/bin/sh

screen -ls \
  | awk '/\(Attached\)/{print $1}' \
  | while read line ; do
      screen -D $line ; 
    done

画面-D(電源の切り離し)も画面の親プロセス(通常は終了)にHANGUP信号を送信します。含む端末)。必要に応じて使用-d(分離)できます。

@doonが気づいたように、これを使用して現在echo $STYどの画面にあるのかを知ることができます。

答え2

andcoz 'より少し安定したバージョンです。

#! /bin/sh -
tab=$(printf '\t')
screen -ls |
  while IFS=$tab read -r session time state; do
    [ "$state" = "(Attached)" ] && screen -D "$session"
  done

セッション名にタブや改行を使用しても機能しません。

関連情報