Saya ingin memulai program dengan SSH menggunakan PHP, yang berfungsi dengan baik, tapi sekarang saya ingin mematikan layar dengan PHP, tetapi satu-satunya yang saya tahu adalah nama layar. Bagaimana cara mengetahui ID layar (secara otomatis)?
Saya ingin memulai program dengan SSH menggunakan PHP, yang berfungsi dengan baik, tapi sekarang saya ingin mematikan layar dengan PHP, tetapi satu-satunya yang saya tahu adalah nama layar. Bagaimana cara mengetahui ID layar (secara otomatis)?
Jawaban:
Anda dapat menggunakan variabel lingkungan $STY
untuk menentukan apakah Anda berada di sesi layar dan juga apa nama sesi yang Anda masuki.
Awalnya kami duduk di jendela terminal, bukan di dalam sesi layar.
$ echo $STY
$
Putar sesi layar:
$ screen -ls
There is a screen on:
31543.tscrn (Detached)
1 Socket in /var/run/screen/S-saml.
Hubungkan ke sana:
$ screen -r 31543.tscrn
Sesi layar di dalam:
$ echo $STY
31543.tscrn
$
Dengan nama sesi Anda dapat membunuhnya menggunakan screen
.
$ screen -X -S tscrn kill
Anda juga dapat menggunakan nomor di sana juga.
$ screen -X -S 31543 kill
Konfirmasikan bahwa itu telah terbunuh:
$ screen -ls
No Sockets found in /var/run/screen/S-saml.
Apakah maksud Anda screen
programnya? screen -ls
akan mencantumkan proses layar bersama dengan nama layarnya, diawali dengan PID tempat mereka menjalankan:
screen -S foo
screen -ls
There are screens on:
8806.foo (09/08/13 20:05:22) (Attached)
Anda dapat menggunakannya untuk mematikan proses:
kill -15 $(screen -ls | grep '[0-9]*\.foo' | sed -E 's/\s+([0-9]+)\..*/\1/')
Atau, jika Anda dapat mengidentifikasi proses php dengan ps, maka id induknya akan menjadi layar dan Anda dapat mematikannya. pgrep -U <myusername> -f <name>
akan membantu menemukan proses php yang ingin Anda temukan (perhatikan -f
yang mencari argumen perintah serta nama perintah). Anda mungkin menjalankan lebih dari satu skrip php, sehingga -f
akan menjadi mekanisme yang lebih baik untuk mencocokkan proses Anda. <myusername>
akan menjadi nama pengguna Anda, <name>
akan menjadi string yang cocok dengan proses oleh. Kemudian Anda dapat menggunakan ps -p <pid> -o ppid=
untuk mendapatkan ID proses layar dan mematikannya.
kill -15 $( ps -p $(pgrep -U fooman -f foobar_process) -o ppid= )
screen
atauDISPLAY
?