Come forzare il distacco dello schermo da un'altra sessione SSH?


158

Ho fatto funzionare lo schermo in una sessione SSH. Il terminale si è bloccato. Dopo aver riavviato Terminal, quella sessione dello schermo pensa ancora che sia collegata. Forse lo è. Forse non so davvero cosa significhi.

Vorrei collegarmi a quella sessione dello schermo da un nuovo login SSH. Non voglio uccidere quella sessione dello schermo poiché accadono cose importanti laggiù. :)

Le opzioni che penso di avere (nessuna delle quali so come risolvere):

  • Come posso staccare quella sessione dello schermo?
  • Come posso uccidere la sessione SSH a cui è collegata quella sessione Screen?

Risposte:


252

Come ha risposto Jose, screen -d -rdovrebbe fare il trucco. Questa è una combinazione di due comandi, presi dalla pagina man.

screen -dstacca la sessione dello schermo già in esecuzione e screen -rricollega la sessione esistente. Eseguendo screen -d -r, si forza lo schermo per staccarlo e quindi riprendere la sessione.

Se usi la capitale -D -RR, cito la pagina man perché è troppo bello per lasciar perdere.

Allega qui e ora. Qualunque cosa significhi, fallo e basta.

Nota: è sempre una buona idea controllare lo stato delle sessioni per mezzo di "screen -list".


3
Puoi anche fare ciò screen -xche è più veloce da digitare, ma non del tutto equivalente. Collegherà la sessione una seconda volta senza prima staccarsi, con conseguente modalità multi-display.
jlh

10
ricordare "Screen Doctor"; screen -Dr
user5359531


6

Risposta breve

  1. Ricollega senza espellere gli altri: screen -x
  2. Ottieni l'elenco dei display:, ^A *selezionare quello da disconnettere, premered


Risposta spiegata

Contesto: quando cercavo la soluzione con la stessa descrizione del problema, mi sono sempre trovato su questa risposta. Vorrei fornire una soluzione più sensata. (Ad esempio: l'altra schermata allegata ha dimensioni diverse e non posso forzare il ridimensionamento nel mio terminale.)

Nota: di PREFIX solito è ^A=ctrl+a

Nota: il display può anche essere chiamato:

  • "front-end utente" (nel atmanuale di comando nella schermata)
  • "client" (vocabolario di tmux in cui si trova questa funzionalità detach-client)
  • "terminale" (come chiamiamo la finestra nella nostra interfaccia utente) / a seconda di

1. Ricollegare una sessione :screen -x

-xallegare a una sessione dello schermo non staccata senza staccarla

2. Elenco delle visualizzazioni di questa sessione:PREFIX *

E 'la chiave predefinita vincolante per: PREFIX :displays. Eseguendolo all'interno dello schermo, identifica l'altro display che vogliamo disconnettere (ad es. Dimensioni inferiori). (Il display corrente viene visualizzato in colore più chiaro / grassetto quando non è selezionato ).

term-type   size         user interface           window       Perms
---------- ------- ---------- ----------------- ----------     -----
 screen     240x60         you@/dev/pts/2      nb  0(zsh)        rwx
 screen      78x40         you@/dev/pts/0      nb  0(zsh)        rwx

Utilizzando le frecce , selezionare il display target , premi d Se non succede nulla, hai provato a staccare il tuo display e lo schermo non lo staccerà. Se fosse un altro, entro un secondo o due, la voce scomparirà.

stampa ENTER per uscire dall'elenco.

Opzionalmente: per adattare il contenuto allo schermo, ridisporre :PREFIX F (maiuscola F)

Estratto dalla pagina man dello schermo:

visualizza

Mostra un elenco tabellare di tutti i front-end (display) dell'utente attualmente connesso. Questo è molto utile per le sessioni multiutente. Nell'elenco dei display è possibile utilizzare i seguenti tasti:

  • mouseclickPassa alla linea selezionata. Disponibile quando "mousetrack" è attivato.
  • space Aggiorna l'elenco
  • d Stacca quel display
  • D Il potere stacca quel display
  • C-g, enteroppure escapeEsci dall'elenco

-2

Prova il comando screen -d -r. Questo ha funzionato per me ..!


2
Ripetere la risposta accettata di 6 anni non è utile
jeb
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.