service --status-all
mostra sua saída em ambos STDOUT (descritor de arquivo 1) e STDERR (descritor de arquivo 2), com os serviços para os quais o status pode ser determinado em STDOUT (indicado por [+]
ou [-]
) e serviços cujo status não pode ser determinado em STDERR (indicado por [?]
).
Ao fazer service --status-all | grep mysql
, você está executando grep
apenas sobre o STDOUT de service --status-all
, é por isso que tudo que está sendo mostrado no STDERR está sendo mostrado (junto com a saída possível de grep
).
Para obter apenas o resultado desejado, redirecione ambos os redirecionamentos de execução STDOUT e STDERR para grep
:
service --status-all |& grep mysql
Teste:
Veja os sinais dentro de []
:
% service --status-all >/dev/null ## Discarding STDOUT
[ ? ] apport
[ ? ] binfmt-support
[ ? ] console-setup
[ ? ] dns-clean
[ ? ] irqbalance
[ ? ] killprocs
[ ? ] kmod
[ ? ] lightdm
[ ? ] mysql
% service --status-all 2>/dev/null ## Discarding STDERR
[ + ] acpid
[ - ] anacron
[ - ] apparmor
[ + ] atd
[ + ] atop
[ + ] avahi-daemon
[ + ] bluetooth
[ - ] brltty
[ + ] cron