обвязка к grep

30

Я пытаюсь пробежать straceкорыто ccze, а труба работает не так, как ожидалось.

Командная строка, которую я запускаю, чтобы проверить это sudo strace -p $(pgrep apache2) | grep open, и все строки выводятся, игнорируя grep.

Есть ли что-то особенное в straceэтом поведении?

Андрей
источник

Ответы:

48

straceвыводит свои следы при стандартной ошибке, а не при стандартном выводе. Это потому, что обычно требуется перенаправить стандартный вывод программы, но обычно это не проблема смешивания stderr и stderr программы.

Таким образом, вы должны перенаправить stracestderr на stdout, чтобы иметь возможность передать его:

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

кроме того, что вы действительно ищете

sudo strace -p $(pgrep apache2) -e open
Жиль "ТАК - прекрати быть злым"
источник
оно работает!! Спасибо! - Я на самом деле не пытался смотреть только на openзвонки, я просто привел это в качестве примера, то, что я действительно пытаюсь сделать, это подсветка цвета
Андрей
Я получаю strace: Invalid process id: '-e'с последней командой. Я на версии 4.8. 2010-03-30.
Элайджа Линн
Ааа, у меня действительно есть httpd (RHEL).
Элайджа Линн
1
@ElijahLynn Замените apache2на название процесса, который вас интересует. Проверьте, pgrepпечатает ли один PID, в противном случае выберите один и запустите, например:sudo strace -p 1234 -e open
Жиль "ТАК - перестать быть злым"
@ Андрей, а как насчет vimцветовой подсветки синтаксиса? strace $CMD 2>&1 > /dev/null | vim -c ':set syntax=strace' -,
Пабло А