4 votes

gnu screen : trouver dans quelle fenêtre d'écran se trouve un processus ou une variable en cours d'exécution ?

J'aimerais savoir lequel de mes ~50 écrans gnu Windows a un processus en cours d'exécution avec une variable spécifique définie dans celui-ci. Par exemple, il y a environ une semaine, j'ai fait ceci :

id=ABC123456; ~/run_long_process $id

Cela fonctionne dans l'une de mes ~50 fenêtres d'écran gnu et produit beaucoup de STDOUT/STDERR mais, à part faire défiler chacune des fenêtres en arrière ou Ctrl+Z et reprendre chacune des fenêtres, y a-t-il un moyen de savoir de laquelle il s'agit ? Des suggestions ?

8voto

vianna77 Points 3505

S'il s'agit de Linux, vous pouvez suivre une procédure similaire. Comme exemple de "processus de longue durée", je vais utiliser "perl -e sleep" qui s'endort pour toujours :

$ id=ABC123456; perl -e sleep $id

Nous devons maintenant trouver le processus en cours :

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

Maintenant que nous avons le PID du parent, nous pouvons fouiner dans son environnement, dans lequel screen fixe un WINDOW variable :

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

Ce qui est exact. Je l'ai exécutée dans la fenêtre d'écran 3. Comme il s'agit d'une variable d'environnement, il y a de fortes chances que votre tâche en hérite également (en fonction de la version de exec() sont utilisés), vous pouvez donc probablement fouiner dans l'environnement de votre tâche et obtenir le même résultat.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X