Ho un sacco di server, su cui eseguo esperimenti usando screen
name__. La procedura è la seguente:
ssh
al server XXXscreen
name__screen
name__Mentre gli esperimenti sono in esecuzione, posso facilmente trovare su quali server si trovano ssh
name__ing su tutti i server e elencando i miei processi in esecuzione (usando top
o ps
name__).
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.
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.
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
Non sono veramente sicuro della tua domanda, ma se tutto quello che vuoi è la lista di sessioni aperte attualmente, prova:
screen -ls
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
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.
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.
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