私はDebianベースのシステム(実際には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
注:他のDebianサーバーで(そして私がこれをやったときでも)スクリーンセッションにあるかどうかにかかわらず、それが現れないことがわかり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データベースを使用します。
次の2つのコマンドを実行します。
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]
スキップします。