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