画面IDを確認する


8

PHPを使用してSSHでプログラムを起動したいのですが、PHPで画面を強制終了したいのですが、知っているのは画面の名前だけです。(自動的に)画面IDを確認するにはどうすればよいですか?


1
screenまたはDISPLAY
Oli 2013

回答:


10

環境変数$STYを使用して、スクリーンセッションにいるかどうか、また、内部にいるセッションの名前を判別できます。

最初は、スクリーンセッション内ではなく、ターミナルウィンドウに座っています。

$ echo $STY

$

スクリーンセッションを起動します。

$ screen -ls
There is a screen on:
    31543.tscrn (Detached)
1 Socket in /var/run/screen/S-saml.

接続する:

$ screen -r 31543.tscrn

画面内セッション:

$ echo $STY
31543.tscrn
$

セッションを強制終了する

セッションの名前を使用すると、を使用してセッションを強制終了できますscreen

$ screen -X -S tscrn kill

そこでも番号を使用できます。

$ screen -X -S 31543 kill

殺されたことを確認してください:

$ screen -ls
No Sockets found in /var/run/screen/S-saml.

1

あなたは意味するかscreen、プログラムを?screen -ls画面プロセスとその画面名を、実行元のPIDを前に付けてリストします。

screen -S foo
screen -ls

There are screens on:
    8806.foo        (09/08/13 20:05:22)     (Attached)

これを使用してプロセスを強制終了できます。

kill -15 $(screen -ls | grep '[0-9]*\.foo' | sed -E 's/\s+([0-9]+)\..*/\1/')

または、psでphpプロセスを識別できる場合、その親IDはscreenであり、それを強制終了できます。 pgrep -U <myusername> -f <name>検索したいphpプロセスを見つけるのに役立ちます(-fコマンド名とコマンド名を検索するに注意してください)。複数のphpスクリプトを実行している可能性があるため-f、プロセスに一致させるための優れたメカニズムになります。<myusername>ユーザー名、<name>プロセスに一致する文字列になります。次に、を使用ps -p <pid> -o ppid=して画面プロセスIDを取得し、それを強制終了できます。

kill -15 $( ps -p $(pgrep -U fooman -f foobar_process) -o ppid= ) 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.