Descubra o ID da tela


8

Quero iniciar um programa com SSH usando PHP, o que funciona bem, mas agora quero matar a tela com PHP, mas a única coisa que sei é o nome da tela. Como descubro o ID da tela (automaticamente)?


1
screenou DISPLAY?
Oli

Respostas:


10

Você pode usar a variável de ambiente $STYpara determinar se está em uma sessão de tela e também qual é o nome da sessão em que está.

Exemplo

Inicialmente, estamos sentados em uma janela do terminal, não dentro de uma sessão de tela.

$ echo $STY

$

Gire uma sessão na tela:

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

Conecte-se a ele:

$ screen -r 31543.tscrn

Sessão na tela interna:

$ echo $STY
31543.tscrn
$

Matando uma sessão

Com o nome da sessão, você pode matá-lo usando screen.

$ screen -X -S tscrn kill

Você também pode usar o número lá também.

$ screen -X -S 31543 kill

Confirme se foi morto:

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

1

Você quer dizer o screenprograma? screen -lslistará os processos de tela junto com seu nome de tela, precedido pelo PID do qual eles estão executando:

screen -S foo
screen -ls

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

Você pode usar isso para matar o processo:

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

Alternativamente, se você pode identificar o processo php com ps, então o ID do pai será exibido na tela e você poderá matá-lo. pgrep -U <myusername> -f <name>ajudará a encontrar o processo php que você deseja encontrar (observe o -fque pesquisa os argumentos do comando e o nome do comando). Você pode estar executando mais de um script php, por isso -fserá um mecanismo melhor para corresponder ao seu processo. <myusername>seria seu nome de usuário, <name>seria uma string para corresponder ao processo. Então você pode usar ps -p <pid> -o ppid=para obter o ID do processo de tela e matá-lo.

kill -15 $( ps -p $(pgrep -U fooman -f foobar_process) -o ppid= ) 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.