PHPを使用してSSHを介してプログラムを起動したいと思います。うまくいきますが、PHPを使って画面を終了したいのですが、私が知っている唯一のものは画面名だけです。画面IDを(自動で)見つける方法は?
答え1
環境変数を使用して、$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.
答え2
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はスクリーンになり、それを終了できます。 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= )