スクリーンセッションでどのコマンドが実行されているかをご覧ください。

スクリーンセッションでどのコマンドが実行されているかをご覧ください。

後で確認できるように画面内でジョブを実行中のままにすることが多いですが、時には画面内でどのコマンドが実行されているかを確認する必要がある場合もあります。通常、次のようなPHPスクリプトの一種です。

screen -d -m nice -n -10 php -f convertThread.php start=10000

どの画面でどのコマンドを実行しているかは記録しませんが、プロセスを終了せずに画面で実行されているコマンドを調べて進行状況を確認したいと思います。

画面のヘルプページにオプションは表示されません。

ベストアンサー1

私は最近これをしなければなりませんでした。スタックオーバーフローで私はどのように答えたか画面で実行中のプロセスのPIDを見つけます。。 PIDがある場合は、psそれを使用してコマンドを取得できます。その回答の内容とあなたの状況に関する追加の内容は次のとおりです。

次のようにスクリーンセッションのPIDを取得できます。

$ screen -ls
There are screens on:
        1934.foo_Server         (01/25/15 15:26:01)     (Detached)
        1876.foo_Webserver      (01/25/15 15:25:37)     (Detached)
        1814.foo_Monitor        (01/25/15 15:25:13)     (Detached)
3 Sockets in /var/run/screen/S-ubuntu.

foo_MonitorスクリーンセッションでBashで実行されているプログラムのPIDが欲しいとしましょう。スクリーンセッションのPIDを使用して、既知のPIDのPPID(親PID)を検索して、そのセッションでfoo_Monitor実行されているセッションのPIDを取得します。bash

$ ps -el | grep 1814 | grep bash
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000  1815  1814  0  80   0 -  5520 wait   pts/1    00:00:00 bash

次にセッションのPIDを取得しますbash

$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815

今、私たちが望むプロセスはそれPID。コマンドを入れ子にするだけです。今回はフラグを使用して-vプロセスgrep bashを取得します。いいえ大きな打撃:

$ echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869

このPIDを使用してコマンドを見つけることができます(2行目の終わりを参照)。

$ ps u -p 23869
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
dotanco+ 18345 12.1 20.1 5258484 3307860 ?     Sl   Feb02 1147:09 /usr/lib/foo

一緒に入れてください:

$ ps u -p $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')

おすすめ記事