画面で実行されているプロセスの一覧表示(VT100/ANSI端末エミュレーションを使用する管理者)

画面で実行されているプロセスの一覧表示(VT100/ANSI端末エミュレーションを使用する管理者)

インストール中に画面を介して複数のプロセスを実行するアプリケーションがあるため、画面に接続されているプロセスを表示できますが、「ps -ef」または「ps auxww」では表示できません。画面内で実行されているすべてのプロセスを一覧表示するには?

ありがとうございます。

答え1

start cmd: # screen -ls
There is a screen on:
        24525.pts-0.syscontrol  (Attached)
start cmd: # pstree -p 24525
screen(24525)─┬─bash(10773)───su(10790)───bash(10791)
              ├─bash(10863)───pstree(11099)
              └─bash(24526)

答え2

を使用するとpstree問題が大幅に簡素化されますが、いくつかの説明が役に立ちます。

起動すると、2つのプロセス(親プロセス)と(サブプロセス)screenが実行されます。screenSCREEN

  • オプションは、子プロセスIDとともにセッション識別子を表示します-lsscreen
  • 一貫性のために、親プロセスIDをリストする必要があります。
  • パラメータのリストを表示すると便利pstreeです。
  • 同じコンピュータで複数の画面セッションを持つことができます。

これらを1つにまとめるにはスクリプトが必要です。例は次のとおりです。

# $Id: ps-screen,v 1.1 2016/10/23 22:19:56 tom Exp $
# http://unix.stackexchange.com/questions/172347/list-processes-running-inside-of-screen-manager-with-with-vt100-ansi-terminal-e
screen -ls | awk '/[0-9]+\./{print;}' | while read session
do
    child=$(echo "$session" | awk '{sub("\..*","",$1); print $1;}')
    printf '%s\n' "$session"
    parent=$(ps -p $child -o ppid=)
    pstree -p -a $parent
done

そして、両方のセッションのサンプル出力は次のようになります。

~ (101) ps-screen 
38142.pts-1.vmw-debian7-64      (10/23/2016 06:20:28 PM)        (Attached)
screen,38141
  └─screen,38142
      └─tcsh,38143
          └─ps-screen,38161 /users/tom/bin/ps-screen
              └─ps-screen,38164 /users/tom/bin/ps-screen
                  └─pstree,38169 -p -a 38141
3975.pts-0.vmw-debian7-64       (10/23/2016 06:15:28 AM)        (Attached)
screen,3974
  └─screen,3975
      ├─tcsh,5002
      │   └─ded,19926 /usr/build//ncurses
      │       └─vile,24647 /usr/build/ncurses/ncurses-6.0-20161029/NEWS
      └─tcsh,36551
          └─ded,36569 /tmp

追加資料:

答え3

screen -lsその後、tty(pty)が検索されるか、ps -t ttynamettynameps t ttynameに関連付けられているプロセスのリストが表示されます。

Ubuntuのps(1)マンページ Ubuntu の screen(1) マンページ

関連情報