나는 데비안 기반 시스템(실제로는 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 설정( dumb
및 screen
제거 )에 따라 [OK]
달라 지므로 화면 대신 완전한 기능을 갖춘 터미널이 있는 것처럼 가장할 수 있습니다.
TERM=xterm /etc/init.d/ntp status
터미널에 연결되어 있는지도 감지하는 것 같습니다. 출력을 다른 프로세스로 파이프하면 이 정보가 [OK]
사라집니다 .
그 이유는 이스케이프 코드 사용으로 인해 [OK]
"저장되지 않은" 환경에서 사용을 방지하는 검사가 있기 때문이라고 생각합니다. 이스케이프 시퀀스는 실제로 아무것도 추가하지 않지만 출력을 엉망으로 만들 수 있습니다.
터미널 성능 점검은 에서 수행됩니다 /lib/lsb/init-functions
. log_use_fancy_output
활용하는 함수가 있습니다.tput
:
tput
tput 유틸리티는 터미널 관련 기능 값과 정보를 쉘에서 사용할 수 있도록 하기 위해 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]
건너뜁니다.