Ricollegare o creare una sessione schermo denominata? (o sessioni schermo persistenti)


27

Fondamentalmente ho una sessione di schermo remoto, che desidero ricollegare automaticamente a. Attualmente sto facendo questo con il seguente comando (come un segnalibro iTerm o un alias)

ssh host -t screen -x thesessionname

Funziona bene, ma se la sessione muore per qualsiasi motivo, mi piacerebbe che fosse ricreata alla prossima connessione. La -Rbandiera per screenè quasi perfetta:

ssh host -t screen -R -S thesessionname

..ma se la sessione è già collegata, viene creata una seconda sessione (come -Rsemplice cerca la prima sessione staccata, se non ne viene trovata nessuna ne crea una nuova)

C'è un modo per fare in modo che la -Rbandiera cerchi anche le sessioni allegate e crearne una nuova solo se thesessionnamenon esiste?

Se ciò non è facilmente realizzabile, come potrei ricreare automaticamente la sessione dello schermo quando muore? Forse uno script eseguito tramite cron che cerca la sessione denominata, creandola se non esistesse?

Risposte:


32

Di 'allo schermo di essere un po' più persistente nel provare:

-D -R
    Attach here and now. In detail this means: If a session is run-
    ning,  then  reattach.  If necessary detach and logout remotely
    first.  If it was not running create it and  notify  the  user.
    This is the author's favorite.

Quindi unisci i due e dovresti avere la tua soluzione ("-DR" equivale a "-D -R"):

screen -DR <yoursession> 

Inoltre e utile da sapere, è possibile visualizzare le sessioni in esecuzione con:

screen -ls

5
Perfetto, screen -x -R -S mainè quello che ho finito per usare (funziona allo stesso modo senza il distacco forzato), grazie!
dal

A volte si desidera utilizzare sceen -r <yoursession>, verrà visualizzato un errore quando è già collegato (anziché creare una nuova sessione).
danger89

11

Alcune buone opzioni. Innanzitutto, il mio preferito:

screen -x -R

Ciò verrà collegato alla prima sessione dello schermo disponibile (condivisione se è connessa un'altra connessione) e se non ci sono sessioni dello schermo, avviarne una nuova.

screen -d -RR

Documenti per questo dicono "Ricollegare una sessione e, se necessario, staccarla o crearla. Utilizzare la prima sessione se è disponibile più di una sessione." Fondamentalmente, la doppia R fa cercare la prima sessione a cui collegarsi.

screen -D -RR

"Attacca qui e ora. Qualunque cosa significhi, fallo e basta." Staccerà e disconnetterà in remoto tutte le altre sessioni collegate e si collegherà alla prima sessione possibile. Fondamentalmente, fa tutto ciò che deve fare per collegarsi a una sessione esistente e creane una nuova se non c'è nulla lì.

Il primo (-x -R) è il meno probabile che causi problemi (non scollegherà l'altra tua connessione) ma semplicemente si attacca sempre a qualcosa se c'è qualcosa a cui attaccarsi e crea qualcosa se non c'è nulla a cui attaccare.


1
Queste sono tutte opzioni utili / utili, ma nessuna di esse risponde alla domanda originale, che era di (ri) connettersi a una sessione per nome .
Daniel,

5

Io uso

screen -dRRS sessname

Non voglio che il mio intero login sull'altra shell venga abbandonato, come -Dfa, e sicuramente non voglio la modalità multi-attach di -x.

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.