Linux でのソートサービス

Linux でのソートサービス

私は Linux サーバーをいくつか持っていますが、それぞれ異なるサービスを実行しています。 を実行するとservice --status-all、出力が数画面表示されます。これを にパイプして、開始されているサービス、開始されていないサービス、または不明なサービスをグループとして確認するのが賢明だと思いましsortた。 コマンドを実行しましたが、[ ? ]上部のエントリのみがソートされ、 および[ - ][ + ]エントリはすべて 1 つの混乱した状態にまとまってしまいました。

私が使用したコマンドは ですservice --status-all | sort。プラス記号とマイナス記号も並べ替えるより良い方法はありますか?

これはDebianボックス上でコマンドラインのみを実行する場合です

答え1

は、と の結果を stdout にservice --status-all書き込みますが、 の結果を stderr に書き込むようです。したがって、 を使用してこれらすべてをソートするには、次のように stdout ストリームと stderr ストリームを組み合わせる必要があります。[ + ][ - ][ ? ]sort

service --status-all 2>&1 | sort

ソートは の値によって影響を受けますLC_COLLATE。デフォルトでは、この値は設定と同じです。すべてのアプリケーションLANGの の値を変更したくないが、このリストを、、でソートしたい場合は、代わりに次のコマンドを使用します。LC_COLLATE+-?

service --status-all 2>&1 | LC_COLLATE=C sort

LC_COLLATEすべてのアプリケーションに設定するには~/.profile、、、~/.bash_profileまたはログイン時に環境を設定するためにソースとなるスクリプトに以下を追加します。

export LC_COLLATE=C

関連情報