サービスコマンド出力を解釈する方法

サービスコマンド出力を解釈する方法
/usr/sbin/service --status-all 

 [ ? ]  alsa-utils
 [ - ]  anacron
 [ + ]  apparmor
 [ + ]  bluetooth
 [ - ]  bootlogd
[...]

衣類サービスが運営されているようですね?しかし:

/usr/sbin/service apparmor status | grep apparmor

apparmor module is loaded.

私の質問:私は衣類サービスが実行されていることを当然と考えることができます(カーネルにロードされたためです)。ロードは行われますが、実行されない、または正しく実行されないようにする方法はありますか?

スクリプトを使用するときに使いやすく、特定のサービスが実行されているか失敗したかを知りたいので、この質問をします。

/usr/sbin/service "${SERVICE}" status | grep "${SERVICE}" 

(私は短い答えを得るために努力します)

/usr/sbin/service --status-all

次のコマンドは、操作が困難な一括出力を提供します。確かに何か抜けたものがありますが、サービスマニュアルページにはほとんど何もありません。

どんなアイデアがありますか?

答え1

service出力を表示する代わりに終了コードを確認する必要があります。

if service apparmor status >&/dev/null; then echo AppArmor is loaded and enabled; fi

正確な結果を提供するには、rootとして実行する必要があります。

はい、質問に切り捨てられた出力があると、AppArmorがロードされアクティブになります。 AppArmorは完全にカーネルで処理されるため、初期化スクリプトは必要な構成ファイルのみをロードするため、そのプロセスはありません。

関連情報