GNU 화면 복사 모드가 실행을 차단합니까?


11

GNU Screen의 스크롤 백 / 복사 모드를 사용합니다. 그래서 Control-A를 눌러 복사 모드로 들어가서 내가 관심있는 부분까지 스크롤 한 다음 잊어 버립니다.

그러나, 스크롤 / 복사 모드로 GNU 화면을 그대로두면 (현재 어떤 앱이 실행 되었든) 실행이 차단되는 것처럼 보입니다. 예를 들어, 스크롤 백 / 복사 모드 인 경우 로컬 웹 서버를 시작하면 해당 웹 서버에 대한 요청이 시간 초과됩니다. 복사 / 스크롤 백 모드를 종료 할 때까지 프로세스가 응답하지 않습니다.

Ruby On Rails 스크립트 / 서버와 Python 도구 Paste에서 이것을 보았습니다.

내 창에 로깅 모드를 설정 한 다음 대안으로 해당 로그 파일을 테일링 / 그 리핑하는 방법을 고려했지만 다른 방법 (설정, 복사 모드 활성화 방법)으로 제어 할 수 있다면 매우 관심이 있습니다.

내 화면 버전은 다음과 같이 말합니다.

화면 버전 4.00.03 (FAU) 23-Oct-06

(qora.com에서 요청했지만 더 나은 곳일 수 있습니다)

답변:


8

프로세스가 차단하는 이유는 복사 붙여 넣기 모드에있는 동안 화면이 프로세스의 출력 파이프를 차단하기 때문입니다. 사실 실제로 복사 / 붙여 넣기하는 동안 잠재적으로 무제한의 양의 정보를 버퍼에 저장하도록 화면에 요청하기 때문에 실제로 버그라고 생각하지 않습니다. 프로그램 출력을 원하지만 잠시 동안 일시 정지 할 수있게하려면 이것을 시도하십시오.

program > logfile 2>&1 & 
less logfile

2> & 1은 프로그램의 stderr과 stdout을 결합합니다. &는 프로그램을 백그라운드로 보냅니다. 필요한 경우 fg를 사용하여 포 그라운드로 가져옵니다. 로그 파일이 줄어듦에 따라 F를 눌러 로그 파일의 끝을 따르십시오. 무언가를 중지하고 검사해야하는 경우 ctrl + c를 누르고 다시 따라 가려면 F를 누르십시오. &를 눌러 표시되는 줄을 정규식으로 제한 할 수도 있습니다. 로그 파일을 볼 때 매우 편리합니다.


"복사 붙여 넣기 모드에있는 동안 화면이 프로세스의 출력 파이프를 차단합니다"-일정량의 출력이 생성 된 경우에는 해당 될 수 있지만이 경우에는 그렇지 않은 것 같습니다 while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done.-복사를 호출하십시오. 모드와 조금 기다립니다. 복사 모드를 종료하면 i 값이 점프하여 백그라운드에서 실행이 계속되었음을 나타냅니다. 그러나 일부 프로세스의 화면 블록 출력을 보았으므로 화면 차단 여부를 정확하게 결정하는 것이 궁금합니다.
davidA

"화면 차단 여부를 정확하게 결정하는 것"-스크롤 백 버퍼의 크기가 결정합니다. 무제한으로 늘릴 수 있지만 메모리가 필요합니다. 그러나 차단하지 않습니다.
san
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.