traço de tubulação para grep


30

Estou tentando passar stracepela calha cczee o cano não funciona como o esperado.

A linha de comando que estou executando para testar é sudo strace -p $(pgrep apache2) | grep opene todas as linhas são exibidas, ignorando grep.

Existe algo de especial stracenisso que causa esse comportamento?

Respostas:


48

straceimprime seus traços no erro padrão, não na saída padrão. Isso ocorre porque é comum querer redirecionar a saída padrão do programa, mas geralmente não é um problema que o stderr do strace e o stderr do programa sejam misturados.

Portanto, você deve redirecionar straceo stderr para o stdout para poder canalizá-lo:

sudo strace -p $(pgrep apache2) 2>&1 | grep open

exceto que o que você realmente está procurando é

sudo strace -p $(pgrep apache2) -e open

funciona!! obrigado! - Eu não estava realmente tentando olhar apenas para openchamadas, eu só colocar isso como um exemplo, o que eu estou realmente tentando fazer é realce de cores
Andrei

Estou recebendo strace: Invalid process id: '-e'com o último comando. Estou na versão 4.8. 30/03/2010.
Elias Lynn

Ahh, na verdade tenho httpd (RHEL).
Elias Lynn

11
@ElijahLynn Substitua apache2pelo nome do processo em que você está interessado. Verifique se pgrepimprime um único PID, caso contrário, escolha um e execute, por exemplosudo strace -p 1234 -e open
Gilles 'SO- stop be evil'

@Andrei, que tal usar o vimdestaque da sintaxe de cores? strace $CMD 2>&1 > /dev/null | vim -c ':set syntax=strace' -.
Pablo #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.