Ho precedentemente ricollegato a una sessione di schermo di lunga durata con screen -dr control. Tuttavia, a volte questo comando non si ricollegherà allo schermo e si bloccherà per sempre (oltre 10 minuti dopo i quali ho interrotto). Ciò accade solo quando la connessione SSH viene interrotta in modo imprevisto e non quando lo schermo è correttamente staccato Ctrl-A d. Altri switch, come screen -xo screen -D -RRanche non funzionano.
Questo post suggerisce di uccidere il PTY che contiene la sessione dello schermo che farà sì che lo schermo completi la sua disconnessione. Tuttavia, uccide semplicemente il guscio da cui è screen -dr controlstato chiamato.
Per esempio:
$ ps -ef | grep control | grep -v grep
nomad 7387 7109 0 13:05 pts/50 00:00:00 screen -dr control
nomad 15299 1 0 Nov27 ? 00:13:47 SCREEN -S control
$ ps -ef | grep bash | grep 'pts/50'
nomad 7109 7108 0 12:49 pts/50 00:00:00 -bash
Il post collegato suggerisce di bashterminare il processo con PID 7109. Questo interromperà anche il screen -dr controlprocesso con PID 7387. Successivamente, non riesco ancora a collegarmi allo schermo.
Il processo SCREEN -S controlche ha avviato la sessione dello schermo ha initcome genitore che ovviamente non posso uccidere.
C'è un modo per ricollegarsi alla sessione dello schermo sospeso?
Aggiornamento: questo succede su CentOS 6.4 usando il kernel 2.6.32-358.6.1.el6.x86_64. Le shell sono tutte versioni bash versione 4.1.2 (1).
screen -lsdice in quei casi "sospesi"?screen -d -r <session>significa "staccare e recuperare", quindi non averlo rimosso di prima mano non dovrebbe importare. (E per farlo spesso, non ...)