Comment lister les sessions d'écran en cours d'exécution?

J'ai un tas de serveurs, sur lesquels je lance des expériences en utilisant screen. La procédure est la suivante :

  1. {[1] } vers le serveur XXX
  2. lancement screen
  3. démarrer les expériences dans quelques onglets
  4. détacher screen
  5. déconnexion du serveur

Pendant que les expériences sont en cours d'exécution, je peux facilement trouver sur quels serveurs elles se trouvent en sshING à tous les serveurs et en listant mes processus en cours (en utilisant top ou ps).

Cependant, une fois le les expériences sont terminées, Comment pourrais-je trouver sur quels serveurs j'ai ouvert une session d'écran (pour que je puisse jeter un oeil à la sortie, les relancer, etc.) ?

PS: mes expériences impriment aussi leur sortie dans des fichiers... mais ce n'est pas le point de ma question.

191
demandé sur Drew Stephens 2009-02-11 20:47:34

9 réponses

Faire la liste de toutes les sessions écran d'un utilisateur, exécutez la commande suivante en tant qu'utilisateur:

screen -ls

Pour voir toutes les sessions d'écran sur une machine spécifique, vous pouvez faire:

ls -laR /var/run/screen/

Je reçois ceci sur ma machine:

gentle ~ # ls -laR /var/run/screen/

/var/run/screen/:
total 1
drwxrwxr-x  4 root utmp   96 Mar  1  2005 .
drwxr-xr-x 10 root root  840 Feb  1 03:10 ..
drwx------  2 josh users  88 Jan 13 11:33 S-josh
drwx------  2 root root   48 Feb 11 10:50 S-root

/var/run/screen/S-josh:
total 0
drwx------ 2 josh users 88 Jan 13 11:33 .
drwxrwxr-x 4 root utmp  96 Mar  1  2005 ..
prwx------ 1 josh users  0 Feb 11 10:41 12931.pts-0.gentle

/var/run/screen/S-root:
total 0
drwx------ 2 root root 48 Feb 11 10:50 .
drwxrwxr-x 4 root utmp 96 Mar  1  2005 ..

C'est une utilisation plutôt brillante Unixy des Sockets Unix enveloppés dans des autorisations de système de fichiers pour gérer la sécurité, l'état et les flux.

351
répondu joshperry 2015-11-11 06:58:43

La commande écran -liste peut être ce que vous voulez.

Voir l'homme

19
répondu Zoredache 2009-02-11 17:55:04

Bien que la réponse de joshperry soit correcte, je trouve très ennuyeux qu'elle 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 la faille d'un écran)

C'est pourquoi j'utilise à la place un script comme celui-ci: ps auxw|grep -i screen|grep -v grep

13
répondu o0'. 2010-08-25 08:48:55
 For windows system

 Open putty 
 then login in server

Si vous voulez voir l'écran dans la Console, vous devez écrire la commande

 Screen -ls

Si vous devez accéder à l'écran, vous devez utiliser la commande ci-dessous

 screen -x screen id

Écrivez PWD en ligne de commande pour vérifier dans quel dossier vous vous trouvez actuellement

6
répondu Ankit jain 2013-11-26 16:15:56

Je ne suis pas vraiment sûr de votre question, mais si tout ce que vous voulez vraiment est une session d'écran actuellement ouverte, essayez:

screen -ls
5
répondu skinp 2009-02-11 17:55:55

Dans la plupart des cas un screen -RRx $username/ suffira :)

Si vous voulez toujours lister tous les écrans, mettez ce qui suit script dans votre chemin et appelez-le screen ou ce que vous voulez:

#!/bin/bash
if [[ "$1" != "-ls-all" ]]; then
    exec /usr/bin/screen "$@"
else
    shopt -s nullglob
    screens=(/var/run/screen/S-*/*)
    if (( ${#screens[@]} == 0 )); then
        echo "no screen session found in /var/run/screen"
    else
        echo "${screens[@]#*S-}"
    fi
fi

Il se comportera exactement comme l'écran sauf pour afficher toutes les sessions d'écran, lorsque vous donnez l'option-ls-all comme premier paramètre.

3
répondu ObiWahn 2012-03-03 15:24:30

Plusieurs personnes ont déjà souligné que

$ screen -ls

Liste 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 .bashrc fichier sur le serveur xxx, alors il se reconnectera automatiquement à votre l'écran de session lors de la connexion.

screen -d -r

J'espère que vous le trouverez utile.

3
répondu samurai 2017-10-24 14:23:02

Écran Ps x | grep

Pour voir quel est cet écran en cours d'exécution au cas où vous utiliseriez la commande

Écran -A-m-j php make_something.php

0
répondu theworlddecoded 2018-04-22 22:12:31

Donc, vous utilisez l'écran pour garder les expériences en arrière-plan, ou quoi? Si oui, pourquoi ne pas simplement le démarrer en arrière-plan?

./experiment &

Et si vous demandez comment obtenir une notification du travail que j'ai fait, que diriez-vous de ficeler l'expérience avec une commande de courrier?

./experiment && echo "the deed is done" | mail youruser@yourlocalworkstation -s "job on server $HOSTNAME is done"
-2
répondu JosefAssad 2009-02-11 17:58:23