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 -x
o screen -D -RR
anche 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 control
stato 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 bash
terminare il processo con PID 7109. Questo interromperà anche il screen -dr control
processo con PID 7387. Successivamente, non riesco ancora a collegarmi allo schermo.
Il processo SCREEN -S control
che ha avviato la sessione dello schermo ha init
come 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 -ls
dice 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 ...)