risposta-alla-domanda-sullo-sviluppo-web-bd.com

Come elencare le sessioni dello schermo in esecuzione?

Ho un sacco di server, su cui eseguo esperimenti usando screenname__. La procedura è la seguente:

  1. sshal server XXX
  2. lanciare screenname__
  3. inizia gli esperimenti in alcune schede
  4. staccare screenname__
  5. disconnettersi dal server

Mentre gli esperimenti sono in esecuzione, posso facilmente trovare su quali server si trovano sshname__ing su tutti i server e elencando i miei processi in esecuzione (usando topo psname__).

Tuttavia, una volta terminati gli esperimenti, come posso trovare su quali server ho aperto una sessione di schermate (in modo da poter dare un'occhiata all'output, riavviarli, ecc.)?

PS: i miei esperimenti stampano anche i loro risultati in file ... ma non è questo il punto della mia domanda.

200
Wookai

Per elencare tutte le sessioni di schermate per un utente, eseguire il seguente comando come tale utente:

screen -ls

Per vedere tutte le sessioni dello schermo su una macchina specifica puoi fare:

ls -laR /var/run/screen/

Ottengo questo sulla mia macchina:

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 ..

Si tratta di un uso Unix di Unix Sockets piuttosto brillante racchiuso nelle autorizzazioni del file system per gestire sicurezza, stato e flussi.

371
joshperry

Il comando screen -list può essere quello che vuoi.

Guarda l'uomo

19
Zoredache

Mentre la risposta di joshperry è corretta, trovo molto fastidioso che non ti dica il nome dello schermo (quello che hai impostato con l'opzione -t), che in realtà è ciò che usi per identificare una sessione. (non è colpa sua, ovviamente, questo è un difetto dello schermo)

Ecco perché uso invece uno script come questo: ps auxw|grep -i screen|grep -v grep

13
o0'.

Non sono veramente sicuro della tua domanda, ma se tutto quello che vuoi è la lista di sessioni aperte attualmente, prova:

screen -ls
6
skinp
 For windows system

 Open PuTTY 
 then login in server

Se vuoi vedere lo schermo in Console, devi scrivere il comando

 Screen -ls

se devi accedere allo schermo, devi usare il comando di sotto

 screen -x screen id

Scrivi PWD nella riga di comando per verificare in quale cartella si è al momento

6
Ankit jain

Nella maggior parte dei casi un screen -RRx $username/ sarà sufficiente :)

Se vuoi ancora elencare tutte le schermate, metti il ​​seguente script nel tuo percorso e chiamalo schermo o quello che vuoi:

#!/bin/bash
if [[ "$1" != "-ls-all" ]]; then
    exec /usr/bin/screen "[email protected]"
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

Si comporterà esattamente come lo schermo tranne che per mostrare tutte le sessioni dello schermo, quando si dà l'opzione -ls-all come primo parametro.

3
ObiWahn

Molte persone lo hanno già indicato

$ screen -ls

elencherebbe le sessioni dello schermo.

Ecco un altro trucco che potrebbe esserti utile.

Se si aggiunge il seguente comando come ultima riga nel file . Bashrc sul server xxx, si riconnetterà automaticamente alla sessione dello schermo all'accesso.

screen -d -r

Spero che tu lo trovi utile.

3
samurai

ps x | grep SCREEN

per vedere che cosa è quella schermata in esecuzione nel caso in cui hai usato il comando

schermo -A -m -d php make_something.php

0
theworlddecoded