J'ai un tas de serveurs, sur lesquels j'exécute des expériences en utilisant screen
. La procédure est la suivante:
ssh
au serveur XXX- lancement
screen
- démarrer des expériences dans quelques onglets
- détacher
screen
- se déconnecter du serveur
Pendant que les expériences sont en cours d'exécution, je peux facilement trouver sur quels serveurs ils se trouvent en ssh
ing sur tous les serveurs et en listant mes processus en cours (en utilisant top
ou ps
).
Cependant, une fois les expériences terminées, comment puis-je trouver sur quels serveurs une session d'écran est ouverte (pour que je puisse regarder la sortie, les relancer, etc.)?
PS: mes expériences impriment également leur sortie dans des fichiers ... mais ce n'est pas le point de ma question.
la source
ls -R /var/run/screen/S-root/ | grep "NamingConvention"
. Les écrans sont enregistrés au<pid>.<screen_name>
format. Ceci est utile pour les scripts bash. Donc, si vous avez un écran avec un nom,0000.NamingConvention
il retournera littéralement le nom des écrans que vous recherchez dans un format facile à analyser.L' écran de commande -list peut être ce que vous voulez.
Voir l' homme
la source
Bien que la réponse de joshperry soit correcte, je trouve très ennuyeux qu'il ne vous indique pas le nom d'écran (celui que vous définissez avec l'option -t), c'est en fait ce que vous utilisez pour identifier une session. (pas sa faute, bien sûr, c'est un défaut d'écran)
C'est pourquoi j'utilise plutôt un script comme celui-ci:
ps auxw|grep -i screen|grep -v grep
la source
ls
sortie. Si vous en avez besoin, vous pouvez également conserver l'option -t.screen -rd <sessionname>
Je ne suis pas vraiment sûr de votre question, mais si tout ce que vous voulez vraiment c'est lister la session écran actuellement ouverte, essayez:
la source
Si vous voulez voir l'écran dans la console, vous devez écrire une commande
si vous devez accéder à l'écran, vous devez utiliser la commande ci-dessous
Écrivez
PWD
en ligne de commande pour vérifier dans quel dossier vous vous trouvez actuellementla source
Dans la plupart des cas, un
screen -RRx $username/
testament suffira :)Si vous souhaitez toujours répertorier tous les écrans, placez le script suivant dans votre chemin et appelez-le écran ou ce que vous voulez:
Il se comportera exactement comme screen sauf pour afficher toutes les sessions screen, en donnant l'option -ls-all comme premier paramètre.
la source
Plusieurs personnes ont déjà souligné que
énumérerait les sessions d'écran.
Voici une autre astuce qui peut vous être utile.
Si vous ajoutez la commande suivante comme dernière ligne dans votre fichier .bashrc sur le serveur xxx, elle se reconnectera automatiquement à votre session d'écran lors de la connexion.
J'espère que vous le trouverez utile.
la source
pour voir quel écran fonctionne au cas où vous auriez utilisé la commande
la source
Vous utilisez donc l'écran pour maintenir les expériences en arrière-plan, ou quoi? Si oui, pourquoi ne pas simplement le démarrer en arrière-plan?
Et si vous demandez comment obtenir une notification pour le travail que j'ai fait, pourquoi ne pas enchaîner l'expérience avec une commande de messagerie?
la source