Cari tahu id layar

8

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)?

TheWaveLad
sumber
1
screenatau DISPLAY?
Oli

Jawaban:

10

Anda dapat menggunakan variabel lingkungan $STYuntuk menentukan apakah Anda berada di sesi layar dan juga apa nama sesi yang Anda masuki.

Contoh

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
$

Membunuh satu sesi

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.
slm
sumber
1

Apakah maksud Anda screenprogramnya? screen -lsakan 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 -fyang mencari argumen perintah serta nama perintah). Anda mungkin menjalankan lebih dari satu skrip php, sehingga -fakan 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= ) 
Drav Sloan
sumber