tela gnu: descubra qual janela da tela possui um determinado processo ou variável em execução?

tela gnu: descubra qual janela da tela possui um determinado processo ou variável em execução?

Gostaria de descobrir qual das minhas ~ 50 janelas de tela GNU tem um processo em execução com uma variável específica definida nele. Por exemplo, há cerca de uma semana, fiz o seguinte:

id=ABC123456; ~/run_long_process $id

Isso está sendo executado em uma das minhas janelas de tela ~ 50 gnu e está produzindo muito STDOUT/STDERR, mas, além de rolar para trás cada uma das janelas ou Ctrl + Z e retomar cada uma das janelas, existe uma maneira de descobrir qual um é? Alguma sugestão?

Responder1

Se este for Linux, você poderia seguir um processo mais ou menos assim. Como exemplo de um "processo de longa execução", usarei "perl -e sleep", que dorme para sempre:

$ id=ABC123456; perl -e sleep $id

Agora, precisamos encontrar o processo em execução:

$ ps -Af | grep [A]BC123456
user  30579 22013  0 09:32 pts/10   00:00:00 perl -e sleep ABC123456
#           ^^^^^ parent PID

Agora que temos o PID do pai, podemos bisbilhotar seu ambiente, no qual screendefine uma WINDOWvariável:

$ tr '\0' '\n' < /proc/22013/environ | grep WINDOW
WINDOW=3

Qual é correto. Eu executei na tela Janela 3. Como esta é uma variável de ambiente, há uma boa chance de que sua tarefa também a herde (dependendo de qual tipo de exec()chamada é usada), então você provavelmente também poderá espionar o ambiente de sua tarefa, e encontre o mesmo resultado.

informação relacionada