[server] 화면이 분리되어 다시 시작할 수 없습니다

퍼티를 사용하고 신뢰할 수없는 무선 연결을 사용하므로 화면을 사용하여 작업을 계속합니다. 종종 연결이 끊긴 다음 화면을 다시 연결할 수 없습니다. 나는 달려 screen -D -RR가서 무기한 거기에 앉아있을 것이다. 나는 시도했다 ctrl+z, 내 콘솔 등을 얻기 위해 다음 ps aux | grep screen다음 kill -9모든 결과에 대해 다음 screen -D -RR다시하지만 난 같은 결과를 얻을 수 있습니다. 나는 당신이 언급하고자하는 d와 r의 조합을 시도하지만 여전히 거기에 있습니다. 내 화면이 있으며 아무것도하지 않고 최소한 모든 이력서가 있습니다.

내 스크린 세션을 다시 시작하는 방법에 대한 팁이나 요령이나 아이디어가 있습니까?



답변

활성 화면에 대한 연결을 끊고 다시 연결할 때 이것을 보았습니다. 버그 # 27462 ( “원래 세션이 손실되면 다시 연결이 중단됩니다”)가 문제를 설명합니다. 발생하는 것으로 보이는 화면은 떠날 예정임을 알리는 tty에 알리려고하지만, 연결이 끊어져서 tty가 중단되므로 시간 초과가 발생할 때까지 기다려야합니다 (5 분 이상) 일부 경우에).

문제를 해결하려면 다음과 같이하십시오.

  • 어떤 tty가 스크린 세션을 잡고 있는지 파악하십시오. ps -ef | grep screen | grep pty
  • 해당 tty와 연관된 로그인 bash를 찾으십시오. ps -ef | grep bash | grep $PTY
  • 그 배쉬를 죽여 kill -KILL $PID

이로 인해 화면 연결이 올바르게 완료되지 않고 정상적으로 다시 연결할 수 있습니다.

이를 자동화하는 예제 스크립트는 여기참조하십시오 .


답변

화면 세션과 비슷한 문제가있었습니다. 이름을 지정하고 다중 사용자 세션으로 설정했습니다. 내가 찾은 것은 내 세션을 나열하고 있지만 다시 연결할 필요가 없다는 것입니다. 그런 다음 시도했습니다.

screen -x <session_name>

챔피언처럼 작동했습니다!


답변

연결 유형에 관계없이 화면이 다시 나타나지 않는 문제가 있다고 말할 수 없습니다. 내 평소 방법 :

ssh myname@foo
screen -S sessionName
(do my work... get disconnected...)

ssh myname@foo
screen -d (just to make sure anything wasn't left attached)
screen -r sessionName


답변

이 버그가 당신에게 영향을 줄 수 있습니까?

http://savannah.gnu.org/bugs/?27462

그들이 권장하는 해결 방법을 시도하고 작동하는지 확인할 수 있습니까?


답변

Soulrce : https://kb.iu.edu/data/ahrm.html

To see your existing screen sessions, enter:
  screen -list
This will display a list of your current screen sessions. For instance, if you had one attached screen, you would see:

         1636.pts-21.hostname      (Attached)

To detach an attached screen, enter:
  screen -D
If you have more than one attached screen, you can specify a particular screen to detach. For example, to detach the screen in the above example, you would enter:
  screen -D 1636.pts-21.hostname


답변

당신이 나처럼 똑똑하다면 root, 일반 사용자 계정 으로 시작된 스크린 세션을 재개하려고했습니다 . ls /var/run/screen나에게 디렉토리를 보여 주면서 이것을 발견했다.root


답변

때때로 같은 문제가 있습니다 (screen -r -d resume not resume, non-responsive). 수정하려면 화면 세션과 관련된 터미널 (tty / pty)을 찾으십시오.

screen -list
There is a screen on:
    28176.pts-51.localhost        (Attached)
1 Socket in /tmp/uscreens/S-xxxx.

나열된 터미널을 찾으십시오 (이 예에서는 pts-51).

ps axuw | grep 'pts/51'   # will vary depending upon how pty's are named
you     12293  0.0  0.2  2148 1128 pts/51   Ss   10:34   0:00 -bash

해당 터미널 (일반적으로 쉘)에서 프로세스를 종료하십시오.

kill 12293

ps를 다시 실행하여 사라 졌는지 확인하십시오. 그렇지 않은 경우 :

kill -9 12293

내 서버 (gnu / linux)에서 때때로 죽을 때까지 -9를 여러 번 죽여야 할 것입니다.

해당 tty의 모든 프로세스가 끝나면 화면이 올바르게 다시 시작됩니다.

screen -r -d