GNU Screenを使用しているときにデーモンステータスメッセージに「[ok]」が表示されないのはなぜですか?

GNU Screenを使用しているときにデーモンステータスメッセージに「[ok]」が表示されないのはなぜですか?

私は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-functionslog_use_fancy_output活用する関数があります。tput:

tputtputユーティリティは、端末関連の機能値と情報をシェルで使用できるようにするために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]スキップします。

おすすめ記事