노트:여기에 설명된 상황은 다음과 관련이 있습니다.이것.
나는 여러 가지를 가지고 있습니다아직도 붙어있어스크린 세션이 screen -list
있지만
% screen -list
No Sockets found in /tmp/uscreens/S-jones.
나는 SIGCHLD
화면 프로세스에 신호를 보내려고 시도했고 그 아래에서 실행 중인 일부 쉘도 종료했습니다(이로 인해 커널이 일부 신호를 이러한 프로세스에 보낼 수 있기를 바랍니다). 이 모든 것의 배후에 있는 이론은 그러한 신호로 인해 screen
적절한 소켓이 /tmp/uscreens
. 그러나 이들 중 어느 것도 작동하지 않습니다.
회의가 아직 진행 중인데 제가 할 수 있는 일이 있나요?매 세션마다적절한 소켓을 재생성했습니까?
답변1
여러 활성 세션의 기본값을 변경하도록 업데이트를 했을 때 SCREENDIR
이런 일이 발생했습니다 . 당신처럼 나도 FIFO를 재생성하도록 설득할 수 없었기 때문에(여기에 제출할 가치가 있는 버그 보고서가 있을 수 있음) 결국 내가 한 일은 다음과 같습니다.렙텔새 세션과 관련된 모든 것을 변환합니다. 지루했지만 계속해서 집중할 수 있었습니다(그리고 몇 가지를 배웠습니다). 제가 사용한 단계는 다음과 같습니다. 아마도 단순화되거나 스크립트로 작성될 수 있습니다.
- 변환하려는 화면 PID를 찾고 해당 하위 프로세스 목록을 가져옵니다(저는 이것을 사용했습니다
pstree -ps $PID
). - 각 하위 프로세스에 대해 해당 PID를 가져오고...
- 껍질이었다면..
- 다른 것이 실행되지 않을 때,
reptyr $PID
- 일반 프로세스가 실행 중이면 SIGTSTP it (^z 또는
kill -TSTP $PID
),bg
it,disown $PID
it 및reptyr $PID; fg
.
- 다른 것이 실행되지 않을 때,
- 과정이 있는 경우어린이들,
reptyr -T $PID
- 정상적인 과정이 있다면
reptyr $PID
- 껍질이었다면..
이것은 완벽하지 않을 수도 있습니다. 결국 쉘 내의 쉘 또는 다른 것으로 끝났지만 더 나쁠 수도 있습니다.