スクリーンセッション内で実行されているコマンドを確認する


10

後で確認できるように、タスクを画面内で実行したままにすることがよくありますが、画面内で実行されているコマンドを確認する必要がある場合があります。これは通常、次のようなPHPスクリプトです。

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

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

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

回答:


18

私は最近これをしなければなりませんでした。Stack Overflow で、screenで実行中のプロセスの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が必要だとします。foo_MonitorスクリーンセッションのPIDを使用してbash、既知のPIDのPPID(親PID)を検索することにより、スクリーンセッションで実行されているセッションのPIDを取得します。

$ 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

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

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

ここで、その PIDを持つプロセスが必要です。コマンドをネストするだけで、今度は-vフラグをオンにgrep bashして、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}')

ああ、賢い!私はそれが好きです!これは質問に直接回答するので、この回答を受け入れます。それは有り難いです!申し訳ありません@Ghanima(: '
オースティンバーク

7

screen -S <your-fancy-name>実行するコマンドに応じて、スクリーンセッションに意味のある名前を付けるためにを使用してどうですか?名前はにリストされscreen -ls、によるセッションの再開に使用されscreen -r <your-fancy-name>ます。

追加して編集:

先日、気になっていたので。tmuxとまったく同じ機能セットを提供しscreen(それ以上ではない場合も)、ニーズに合った機能が付属しています。FAQから:「tmuxは、エスケープシーケンスを使用した大規模なハックなしに、実行中のアプリケーションに自動的にウィンドウの名前を変更することをサポートします。デフォルトではオンになっています。」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.