Adakah alasan khusus mengapa Anda tidak dapat menggunakan flag -o?
ps auxw | grep sbin/apache | awk '{print " -p " $2}' | xargs strace -o /tmp/trace.txt
Juga, Anda harus menggunakan beberapa trik regex untuk tidak menangkap proses grep Anda dalam daftar proses.
ps auxw | grep 'sbin/[a]pache' ....
Ingat juga bahwa dalam kasus khusus apache,
- Apache (biasanya) multiproses, apakah Anda ingin mendapatkan induk atau salah satu anaknya? Saya akan menambahkan flag '-f' ke strace, yang (antara lain) memasukkan PID ke dalam output.
-
Anda bisa mendapatkan ID proses dari proses induk utama dari file PID.
misalnya strace -o /tmp//trace.txt -f $(
Jadi, itulah pertanyaan yang Anda tanyakan .. tapi apa yang Anda coba lakukan? Debug saat memulai? strace proses anak melayani permintaan? Lihat juga flag -X untuk apache.
Secara umum, strace "dapat dialihkan ke file" tetapi ia menulis hasilnya ke stderr (mencampurnya dengan stderr program), jadi akan seperti
strace progname 2>my_strace_output
Jika Anda ingin "semua hasil" pergi ke file:
strace progname 1>my_strace_output 2>&1
jika Anda ingin dapat "mengambilnya":
strace progname 2>&1 | grep ...
namun berhati-hatilah jika Anda grep dan mengirimkannya ke file banyak buffering terjadi:https://unix.stackexchange.com/questions/338330/grepping-strace-output-gets-hard