Por que o grep mostra uma saída que não contém a palavra de pesquisa?

0

Eu quero verificar se o serviço sensu está instalado. Eu executei este comando service --status-all| grep sensu e aqui está a saída

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

Acho muito estranho que grep não filtre todas as linhas acima porque nenhuma delas contém a palavra de pesquisa "sensu"

A pergunta é: por quê?

    
por Anthony Kong 25.01.2015 / 01:41

1 resposta

1

Parece que alguns serviços relatam seu status para 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 para stdout, 15 para stderr. Você está vendo os que reportam ao stderr porque o pipe apenas manipula stdout. Faça isso:

service --status-all 2>&1| grep sensu
    
por 25.01.2015 / 02:50