Wcześniej ponownie przyłączyłem się do długotrwałej sesji ekranowej z screen -dr control
. Czasami jednak to polecenie nie łączy się ponownie z ekranem i zamiast tego zawiesza się na zawsze (ponad 10 minut, po których przerwałam). Dzieje się tak tylko wtedy, gdy połączenie SSH zostaje nieoczekiwanie zerwane, a nie przy odpowiednim odłączeniu ekranu Ctrl-A d
. Inne przełączniki, takie jak screen -x
lub screen -D -RR
też nie działają.
Ten post sugeruje zabicie PTY, która przechowuje sesję screen, co spowoduje, że screen zakończy swoje rozłączanie. Jednak po prostu zabija powłokę, z której screen -dr control
została wywołana.
Na przykład:
$ 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
Połączony post sugeruje zabicie bash
procesu za pomocą PID 7109. Spowoduje to również zabicie screen -dr control
procesu za pomocą PID 7387. Potem nadal nie mogę połączyć się z ekranem.
Proces, SCREEN -S control
który rozpoczął sesję ekranową, ma init
za swój element nadrzędny, którego oczywiście nie mogę zabić.
Czy istnieje sposób ponownego przyłączenia się do sesji ekranu zawieszonego?
Aktualizacja: Dzieje się tak w CentOS 6.4 przy użyciu jądra 2.6.32-358.6.1.el6.x86_64. Wszystkie powłoki są wydane w wersji bash 4.1.2 (1).
źródło
screen -ls
mówi w tych „wiszących” przypadkach?screen -d -r <session>
oznacza „odłącz i odzyskaj”, więc nie odłączenie go z pierwszej ręki nie powinno mieć znaczenia. (A za robienie tego często, nie robi ...)Odpowiedzi:
Myślę, że powinieneś spróbować
następnym razem - wściekłe (wielkie litery) wywołanie powinno zmusić go do rozłączenia innej sesji utrzymywanej przez pośredni skok netcat.
źródło
Jak zasugerował Jens Timmerman, ostatecznym powodem tego dziwnego zachowania było to, że łączyłem się ze zdalnym serwerem za pomocą SSH ProxyCommand i
ncat
. Po zabiciuncat
na maszynie pośredniej jestem w stanie ponownie dołączyć do sesji ekranowej.źródło
Jeśli jest to częsty problem, możesz również rozważyć użycie mosh jako zamiennika ssh:
http://mosh.mit.edu
źródło