ti-enxame.com

Como identificar qual Xterm um shell ou processo está sendo executado?

Eu costumo usar sessões X de longa duração com vários desktops virtuais e muitos muitos xterms.

Eu também uso o controle do trabalho no shell (ZSH).

Às vezes, gostaria de poder identificar um shell ou processo Xterm que está funcionando (ou mesmo suspenso) com um simples comando.

Por exemplo, você edita um arquivo com o VIM e o VIM advertem que ele já está aberto com outra instância VIM que ainda está sendo executada. Mas agora você se esqueceu em qual XTERM este vim com o processo de processo XYZ foi iniciado e suspenso. Matando não funciona, porque é suspenso. Retomando através de um sinal e, em seguida, a morte poderia funcionar, mas pode estragar um processo de execução em primeiro plano e talvez você não queira matar a instância vim porque tem várias janelas configuradas ...

Atualmente estou usando awesomewm, mas também estou interessado em soluções para outros WMS.

6
maxschlepzig

Xterm coloca a variável WINDOWID no ambiente de seu subprocesso. Seu valor é o ID da janela da janela Xterm. Não há posição POSIX de consultar o ambiente de um processo com base no seu PID; Aqui está uma maneira do Linux de consultar o ambiente do processo $pid e extraindo o WINDOWID variável:

</proc/$pid/environ gawk -v 'RS=\0' -F = '$1=="WINDOWID" {print $2}'

Você pode então encontrar ou agir na janela com wmctrl ou através da interface do seu gerenciador de janelas.

Se você usar a tela, primeiro tente a variável STY, que é definida para o nome da sessão da tela. Você pode se conectar a essa sessão com screen -rd -S "$sessionname".

7