스크린 세션에 소켓을 재생성하라고 어떻게 알릴 수 있나요?

스크린 세션에 소켓을 재생성하라고 어떻게 알릴 수 있나요?

노트:여기에 설명된 상황은 다음과 관련이 있습니다.이것.


나는 여러 가지를 가지고 있습니다아직도 붙어있어스크린 세션이 screen -list있지만

% screen -list
No Sockets found in /tmp/uscreens/S-jones.

나는 SIGCHLD화면 프로세스에 신호를 보내려고 시도했고 그 아래에서 실행 중인 일부 쉘도 종료했습니다(이로 인해 커널이 일부 신호를 이러한 프로세스에 보낼 수 있기를 바랍니다). 이 모든 것의 배후에 있는 이론은 그러한 신호로 인해 screen적절한 소켓이 /tmp/uscreens. 그러나 이들 중 어느 것도 작동하지 않습니다.

회의가 아직 진행 중인데 제가 할 수 있는 일이 있나요?매 세션마다적절한 소켓을 재생성했습니까?

답변1

여러 활성 세션의 기본값을 변경하도록 업데이트를 했을 때 SCREENDIR이런 일이 발생했습니다 . 당신처럼 나도 FIFO를 재생성하도록 설득할 수 없었기 때문에(여기에 제출할 가치가 있는 버그 보고서가 있을 수 있음) 결국 내가 한 일은 다음과 같습니다.렙텔새 세션과 관련된 모든 것을 변환합니다. 지루했지만 계속해서 집중할 수 있었습니다(그리고 몇 가지를 배웠습니다). 제가 사용한 단계는 다음과 같습니다. 아마도 단순화되거나 스크립트로 작성될 수 있습니다.

  1. 변환하려는 화면 PID를 찾고 해당 하위 프로세스 목록을 가져옵니다(저는 이것을 사용했습니다 pstree -ps $PID).
  2. 각 하위 프로세스에 대해 해당 PID를 가져오고...
    • 껍질이었다면..
      • 다른 것이 실행되지 않을 때,reptyr $PID
      • 일반 프로세스가 실행 중이면 SIGTSTP it (^z 또는 kill -TSTP $PID), bgit, disown $PIDit 및 reptyr $PID; fg.
    • 과정이 있는 경우어린이들,reptyr -T $PID
    • 정상적인 과정이 있다면reptyr $PID

이것은 완벽하지 않을 수도 있습니다. 결국 쉘 내의 쉘 또는 다른 것으로 끝났지만 더 나쁠 수도 있습니다.

관련 정보