A saída do apachectl é enviada para stderr. Os comandos que você está usando tentam filtrar o stdout. Para usar o grep da maneira que você está descrevendo, redirecione stderr para stdout, assim:
apachectl -S 2>&1 | grep 'blah'
Eu tenho um servidor com cerca de 300 hosts virtuais. Quando eu quero ter certeza de que um arquivo httpd.conf específico está carregado na configuração do Host Virual e a sintaxe está correta, eu corro apachectl -S
. O problema é que, no entanto, recebo uma tonelada de saída.
Eu tentei apacectl -S | grep 'foo'
e apachectl -S > foo.txt
para tentar tornar esses dados um pouco mais gerenciáveis, mas a saída do comando não é propícia ao uso de um arquivo de texto.
Quando tento apachectl -S | grep 'foo'
, ele simplesmente retorna a saída inteira de apachectl -S
.
Quando eu tento apachectl -S > foo.txt
, foo.txt é um arquivo vazio.
Isso pode ter algo a ver com o modo como o servidor está configurado, porque consigo fazer o grep com sucesso na minha máquina local.
Alguma sugestão?
Haha, parece que essa pergunta já foi respondida no Stack Overflow:
Como apachectl -S
(que é realmente um wrapper para httpd -S
) envia sua saída através de STDERR, eu preciso redirecionar STDERR para STDOUT e, em seguida, grep it.
apachectl -S 2>&1 | grep 'foo'
Obrigado, S.O.!
Tags grep apache-2.2 httpd