시작 시 화면 충돌을 디버그/수정하는 방법

시작 시 화면 충돌을 디버그/수정하는 방법

(이것은 OS X 버전의 Gnu 화면에 관한 질문입니다. 차이가 있는지는 모르겠습니다. Unix와 Linux는 Ask Different보다 screen-fu가 더 좋을 것 같습니다.)

내 컴퓨터의 터미널에 다음 명령을 입력하면

screen -dRR my_session_name

할 수 있는새로운 화면 세션에 액세스하세요.

SSH를 통해 이미 실행 중인 세션을 다시 연결할 수 있는 것 같습니다.

screen -R my_session_name

하지만 새 세션을 생성합니다(다른 세션이 존재하는지 여부와 관계없이 가장 실망스러운 것은 다른 세션이 존재하지 않는 경우입니다).보류, 탈출할 수 있는 유일한 방법은 ^Z백그라운드로 밀어넣고 fg작업을 다시 시작하는 것입니다. 이때 작업이 종료되었다는 메시지가 표시됩니다( Sorry, cannot contact session "processnumber.tty.hostname" again.).

sudo dtruss screenMac OS X 버전에서 실행을 시도했지만 strace(매우 장황한) 출력에서 ​​무엇을 찾아야 할지 모르겠습니다.

나는 한동안 내 컴퓨터에서 떨어져 있었고(다른 도시에서 며칠을 보냈습니다) 새로운 스크린 세션을 시작해야 합니다!

내 거 ~/.screenrc:

# Set the shell to use fish:
shell "/usr/local/bin/fish"

# Make xterm scrolling work properly with screen.
# Note, this works in Terminal.app and iTerm too.
#termcapinfo xterm-256color|xterm-color|xterm|xterms|xs|rxvt ti@:te@

# Custom escape character like this:
escape ^Xx

# always create these sessions for me:
screen -t "foo" 1

# test to see if I can create new screens from SSH in any way:
#nonblock on

보시다시피, 저는 이 문제를 해결하기 위해 다양한 옵션을 추가하고 주석 처리해 보았습니다. (지금은 을 사용하거나 사용하지 않고 fish, bash사용 하거나 사용하지 않고 외부 세션 fish과 을 사용해 보았습니다 .) 또한 매우 빠르고 느린 연결에서도 동일한 동작을 확인했습니다.bashnoblockscreen -t

다음 정보 중 하나라도 제공해 주시면 감사하겠습니다.

  • 문제 찾기에 대한 제안(strace/dtrace 출력의 중요한 부분, 기타 사항)
  • 새로운 .screenrc옵션에 대한 제안,
  • 뭔가 완전히 다른데요?

더 많은 정보를 게시하게 되어 기쁘지만 dtruss길이가 수백 줄에 달하므로 전체 출력을 피하고 싶습니다.

답변1

이 경우 수평 답변은 OS X에만 해당됩니다.

한 가지 옵션과 이 예에서 사용하게 된 옵션은 다음과 같습니다.

무언가를 사용하여 로컬로 시작하면 screen작동할 것입니다. 그런 다음 세션에 다시 연결하십시오.

나는 새로운 Terminal.app 창을 열고 요청한 명령을 실행하는 Apple 스크립트를 생성하고 실행하는 Python 프로그램을 작성했습니다. SSH를 사용하는 경우에도(분명히 계정은 GUI에 로그인되어 있어야 함) 시스템 자체에서 일하다).

"osxhijack"이라고 하며 github에 있습니다.여기. 당신은 이것을 다음과 같이 부릅니다:

hijack screen -dRR my_new_session

그런 다음 다음을 사용하여 즉시 다시 연결할 수 있습니다.

screen -R my_new_session

"실제" 답변이 나오면(예: 화면 설치에 문제가 있는 경우) 이 질문을 새로운 답변으로 업데이트하겠습니다.

관련 정보