Zazwyczaj loguję się do mojego Linux-a z laptopa z systemem Windows za pomocą PuTTY i tam uruchamiam ekran. Kiedy moi korporacyjni władcy postanowili zaktualizować laptopa do systemu Windows 7, moje sesje PuTTY były zawieszone. Zazwyczaj zabijam sesję PuTTY, a następnie albo ponownie dołączam sesję screen (jeśli się odłączyła), albo wydaje „-d -r”, jeśli sesja screen nie odłączyła się, gdy moja sesja PuTTY zamarła.
Mój problem polega na tym, że mam sesję ekranową, która początkowo odmawiała odłączenia. Użyłbym:
screen -d -r 6313.sessionName
ale polecenie po prostu tam wisiało.
Odkryłem, że w katalogu / var / run / screen // znajdowały się „pliki” odpowiadające każdej z moich sesji screen. Zauważyłem, że ten uparty ma 700 uprawnień, podczas gdy inne (które zostały odłączone) mają 600 uprawnień.
Więc zmieniłem uprawnienia do tego pliku na 600. Screen wyświetla teraz jako „odłączony”. Jednak gdy próbuję ponownie do niego dołączyć, polecenie po prostu ponownie się zawiesza.
Za pomocą
ps aux | grep 6313
pokazuje stan procesu jako „Ss”, co oznacza, że jest on w stanie przerywanym. Nie różni się to niczym od innych odłączonych sesji ekranowych, które pokazują ten sam status procesu.
Nie wiem, jak odzyskać tę sesję. Jakieś sugestie?
źródło
screen -S <name>
, aby każda sesja miała nazwę, którą znam. W ten sposób, gdy chcę się rozłączyć i ponownie połączyć, mogę użyć tej nazwy zamiast PID, takiego jakscreen -r <name>
lubscreen -dr <name>
mysession
zamiastpid.mysession
.-S
flagi, powinieneś być w stanie odwoływać się tylko do tegomysession
bez potrzeby używania prefiksu pid.Odpowiedzi:
Kiedy używam
screen
polecenia, zwykle otwieram gniazdo w następujący sposób:a kiedy chcę dołączyć lub ponownie dołączyć, używam:
źródło
-x Attach to a not detached screen. (Multi display mode).
-D -RR Do whatever is needed to get a screen session.
Aby odłączyć sesję ekranową, użyj Ctrl+ A+ D. Następnie, aby ponownie dołączyć sesję, użyj
screen -r <pid>
. Jeśli chcesz połączyć się z używaną sesją ekranową, użyjscreen -dr <pid>
najpierw, aby odłączyć, a następnie ponownie podłączyć sesję ekranową.źródło
screen -d -r 6313.sessionName
ale to działa tylko na oderwanie, a następnie ponowne nałożenie. W tym momencie pojawiło się zamieszanie. Jeśli chcesz po prostu odłączyć ekran, nie skorzystasz z-r
.