Determina a exibição ou sessão VNC baseada no PID

2

Eu freqüentemente VNC em um servidor onde executamos muitos processos matlab computacionalmente intensivos concorrentes. Às vezes, um dos meus processos se comporta mal, o que eu posso ver de cima, mas eu tenho dificuldade em descobrir em qual sessão VNC está sendo executada, ou mais especificamente, em qual tela está sendo executado.

Suponha que eu veja que o PID 8536 se parece com um recurso hog e eu quero investigar. Como é uma sessão matlab, sei que provavelmente um IDE está aberto em algum lugar e quero verificar se algo importante está acontecendo antes de matá-lo.

Nós resolvemos isso de forma um tanto estranha no passado, identificando qual PTY 8536 foi lançado, em seguida, olhando para uma árvore de processo para descobrir coisas que foram lançadas naquele contexto, rolando para cima e vendo a inicialização do VNC.

Parece que deve haver uma maneira melhor de ir PID - > Exibição X (ou Sessão VNC).

    
por Daniel Kessler 06.08.2012 / 20:42

1 resposta

2

No sistema de arquivos do processo, existe um arquivo chamado environ que deve conter as variáveis de ambiente definidas para qualquer PID, incluindo a variável VNCDESKTOP, que deve incluir o número da tela daquela sessão VNC pai.

Isso deve exibir as informações:

awk -v 'RS=
awk -v 'RS=%pre%' -F = '$1=="VNCDESKTOP" {print $2}' /proc/$PID/environ
' -F = '$1=="VNCDESKTOP" {print $2}' /proc/$PID/environ
    
por 27.08.2012 / 22:48