GNU Screen을 사용할 때 데몬 상태 메시지에 "[ok]"가 표시되지 않는 이유는 무엇입니까?

GNU Screen을 사용할 때 데몬 상태 메시지에 "[ok]"가 표시되지 않는 이유는 무엇입니까?

나는 데비안 기반 시스템(실제로는 debian wheezy를 기반으로 한 Voyage Linux 0.9.1)을 가지고 있는데 /etc/init.d/ntp status이 작업을 수행하면 반환됩니다(예를 들어).

$ /etc/init.d/ntp status
[ ok ] NTP server is running

그러나 스크린 세션(버전 4.01.00devel, 2006년 5월 2일) 내에는 [ ok ]나타나지 않습니다 .

$ screen
$ /etc/init.d/ntp status
NTP server is running

왜 그럴까요? 스크린 세션에 어떻게 표시하나요?

xterm-256color참고: 다른 데비안 서버에서 (그리고 내가 이 작업을 했을 때도 ) 스크린 세션에 있든 없든 그것이 결코 나타나지 않는다는 echo $TERM것을 알았습니다 . 따라서 그것은 아마도 실제 문제가 아닐 것입니다./etc/init.d/ntp status[ ok ]screen

답변1

화면이 필요하지 않습니다. 실험해보자:

TERM=dumb /etc/init.d/ntp status  # no [OK]
/etc/init.d/ntp status | cat      # also no [OK]

이것은 또한 누락되었습니다 [OK]. 분명히 출력은 TERM 설정( dumbscreen제거 )에 따라 [OK]달라 지므로 화면 대신 완전한 기능을 갖춘 터미널이 있는 것처럼 가장할 수 있습니다.

TERM=xterm /etc/init.d/ntp status

터미널에 연결되어 있는지도 감지하는 것 같습니다. 출력을 다른 프로세스로 파이프하면 이 정보가 [OK]사라집니다 .

그 이유는 이스케이프 코드 사용으로 인해 [OK]"저장되지 않은" 환경에서 사용을 방지하는 검사가 있기 때문이라고 생각합니다. 이스케이프 시퀀스는 실제로 아무것도 추가하지 않지만 출력을 엉망으로 만들 수 있습니다.

터미널 성능 점검은 에서 수행됩니다 /lib/lsb/init-functions. log_use_fancy_output활용하는 함수가 있습니다.tput:

tputtput 유틸리티는 터미널 관련 기능 값과 정보를 쉘에서 사용할 수 있도록 하기 위해 terminfo 데이터베이스를 사용합니다.

다음 두 명령을 실행합니다.

tput hpa 60
tput setaf 1

~에서tput: 휴대용 단말기 제어그리고Bash 프롬프트 HOWTO - 색상 및 커서 이동:

hpa          - Move cursor to column #1
setaf [1-7]  - Set a foreground colour using ANSI escape

특히 log_use_fancy_output단말기에 연결되어 있는지 확인하세요. 그런 다음 TERM이 비어 있는지 또는 dumb으로 설정되어 있는지 확인하고 두 tput작업이 모두 성공했는지 확인합니다. 성공하면 [OK]인쇄하고, 그렇지 않으면 [OK]건너뜁니다.

관련 정보