Écran gnu: trouvez-vous quelle fenêtre d'écran a un processus ou une variable d'exécution donnée?

Je voudrais savoir quelle de mes ~ 50 gnu screen windows a un processus en cours d'exécution avec une variable spécifique définie dans elle. Par exemple, il y a environ une semaine, j'ai fait ceci:

id=ABC123456; ~/run_long_process $id 

Cela se produit dans l'une de mes fenêtres d'écran de 50 gnu et il produit beaucoup de STDOUT / STDERR mais, à l'exception de défiler chaque fenêtre ou Ctrl + Z et reprendre chacune des fenêtres, y at-il un moyen de savoir quelle Un c'est Aucune suggestion?

Si c'est Linux, vous pouvez suivre un processus comme celui-ci. À titre d'exemple d'un "processus de longue durée", je vais utiliser "perl -e sleep" qui dort pour toujours:

 $ id=ABC123456; perl -e sleep $id 

Maintenant, nous devons 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 snoop dans son environnement, dans lequel l' screen définit une variable WINDOW :

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

Qui est correct. Je l'ai couru dans la fenêtre d'écran 3. Puisqu'il s'agit d'une variable d'environnement, il y a de bonnes chances que votre tâche l'hérite également (en fonction de la saveur des appels exec() utilisés), vous pouvez donc snoop l'environnement de votre tâche Ainsi, et trouver le même résultat.