Grepping através dos resultados de apachectl -S

3

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?

    
por CamelBlues 23.03.2012 / 15:32

2 respostas

7

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'
    
por 23.03.2012 / 17:28
3

Haha, parece que essa pergunta já foi respondida no Stack Overflow:

link

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.!

    
por 23.03.2012 / 17:27