Pantalla gnu: ¿encontrar qué ventana de pantalla tiene un proceso o variable en ejecución determinado?

Pantalla gnu: ¿encontrar qué ventana de pantalla tiene un proceso o variable en ejecución determinado?

Me gustaría saber cuál de mis ventanas de pantalla de ~50 gnu tiene un proceso ejecutándose con una variable específica definida en él. Por ejemplo, hace aproximadamente una semana hice esto:

id=ABC123456; ~/run_long_process $id

Esto se está ejecutando en una de mis ventanas de pantalla de ~50 gnu y está produciendo una gran cantidad de STDOUT/STDERR pero, además de desplazarse hacia atrás en cada una de las ventanas o Ctrl+Z y reanudar cada una de las ventanas, ¿hay alguna manera de averiguar cuál? uno es? ¿Alguna sugerencia?

Respuesta1

Si se trata de Linux, podría seguir un proceso como este. Como ejemplo de un "proceso de larga duración", voy a utilizar "perl -e sleep", que simplemente duerme para siempre:

$ id=ABC123456; perl -e sleep $id

Ahora, necesitamos encontrar el proceso en ejecución:

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

Ahora que tenemos el PID del padre, podemos husmear en su entorno, en el que screenestablece una WINDOWvariable:

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

Cual es correcta. Lo ejecuté en la ventana de pantalla 3. Dado que se trata de una variable de entorno, existe una buena posibilidad de que su tarea también la herede (dependiendo del tipo de exec()llamadas que se utilicen), por lo que probablemente también pueda espiar el entorno de su tarea. y encontrar el mismo resultado.

información relacionada