sensuサービスがインストールされているかどうかを確認したい。このコマンドを実行したservice --status-all| grep sensu
ところ、出力は次のようになった。
vagrant@vagrant-ubuntu-trusty-64:~$ service --status-all| grep sensu
[ ? ] apport
[ ? ] console-setup
[ ? ] cryptdisks
[ ? ] cryptdisks-early
[ ? ] dns-clean
[ ? ] irqbalance
[ ? ] killprocs
[ ? ] kmod
[ ? ] networking
[ ? ] ondemand
[ ? ] open-vm-tools
[ ? ] pppd-dns
[ ? ] rc.local
[ ? ] screen-cleanup
[ ? ] sendsigs
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ ? ] virtualbox-guest-x11
grep
上記の行のどれにも検索語「sensu」が含まれていないため、すべての行がフィルタリングされないのは非常に奇妙だと思います。
問題は、なぜかということです。
答え1
いくつかのサービスは、そのステータスを stderr に報告しているようです:
$ service --status-all 2>&1 | wc -l
43
$ service --status-all 2>/dev/null | wc -l
28
$ service --status-all 2>&1 1>/dev/null | wc -l
15
28 は stdout に、15 は stderr に出力されます。パイプは stdout のみを処理するため、stderr にレポートされるものが表示されます。代わりに、次のようにします。
service --status-all 2>&1| grep sensu