Por que o “serviço --status-all | grep mysql ”obtém muitos resultados não relacionados?

0

Parece estranho aqui enquanto corre

service --status-all | grep mysql

por que recebo tantos resultados errados?

Funciona bem em Centos, onde eu estou recebendo:

mysql is running xxxxxxx

Isso é o que eu estou recebendo no Ubuntu:

    
por lizhe 12.01.2016 / 10:43

1 resposta

3

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
    
por heemayl 12.01.2016 / 10:54