strace perpipaan untuk grep


30

Saya mencoba menjalankan stracepalung ccze, dan pipa tidak bekerja seperti yang diharapkan.

Baris perintah yang saya jalankan untuk menguji adalah sudo strace -p $(pgrep apache2) | grep open, dan semua baris adalah output, mengabaikan grep.

Adakah sesuatu yang istimewa tentang straceyang menyebabkan perilaku ini?

Jawaban:


48

stracemencetak jejaknya pada kesalahan standar, bukan pada output standar. Itu karena itu umum untuk ingin mengarahkan output standar dari program, tetapi biasanya bukan masalah yang strace's stderr dan stderr program dicampur.

Jadi, Anda harus mengarahkan stracestderr ke stdout untuk dapat mengirimnya:

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

kecuali bahwa apa yang sebenarnya Anda cari adalah

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

berhasil!! Terima kasih! - Saya tidak benar-benar mencoba untuk melihat hanya pada openpanggilan, saya hanya menempatkan itu sebagai contoh, apa yang saya benar-benar coba lakukan adalah menyoroti warna
Andrei

Saya mengerti strace: Invalid process id: '-e'dengan perintah terakhir. Saya di versi 4.8. 2010-03-30.
Elijah Lynn

Ahh, sebenarnya saya punya httpd (RHEL).
Elijah Lynn

1
@ElijahLynn Ganti apache2dengan nama proses yang Anda minati. Periksa yang pgrepmencetak PID tunggal, jika tidak pilih satu dan jalankan missudo strace -p 1234 -e open
Gilles 'SO- stop being evil'

@ Andrei, bagaimana dengan menggunakan vimpenyorotan sintaks warna? strace $CMD 2>&1 > /dev/null | vim -c ':set syntax=strace' -.
Pablo A
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.