Skip to content

strace ile birden çok süreci eşzamanlı takip etmek

Yazılım tarafında ortaya çıkan hatalar konusunda loglar yetersiz kaldığında veya uygulama segfault verip bir hata mesajı bile basamaz olduğunda `strace` aklıma gelen ilk uygulama oluyor. `strace` kendisine argüman olarak gösterdiğimiz süreç tarafından kullanılan sistem çağrılarını ve sinyallerini gösteriyor.

Bir süreci doğrudan `strace` kullanarak başlatmamız mümkün. Bunun için uygulamayı başlatırken satırın en başına `strace` eklememiz yetiyor.

$ strace ls -l

Fakat özellikle arkaplanda çalışan servis uygulamaları için bu yol her zaman kullanılamıyor. O zaman da halihazırda çalışmakta olan uygulamanın süreç numarasını (pid-process id) `strace`e gösteriyoruz.

$ pidof sshd

783

$ strace -p 783

Tabi günümüz sistemlerinde servisler eşzamanlı birçok süreç halinde çalışıyor. Bu durumda bu süreçlerden sadece birini takip etmek hatayı yakalamak için piyango gibi birşey oluyor :) Neyse ki `strace`in birden çok süreç numarası kabul etme özelliği imdadımıza yetişiyor. İstersek “-p” parametresini birçok kez kullanabiliyoruz.

$ pidof apache2
2155 2154 2153 2152 2147 2042 2041 2040 2039 2038 2035 2034

$ strace -p 2155 -p 2154 -p 2153 -p 2152 -p 2147 -p 2042 -p 2041 -p 2040 -p 2039 -p 2038 -p 2035 -p 2034

Örnekte olduğu gibi `pidof` çıktısındaki numaraları parametrelere aktarmak biraz zahmetli olduğundan genelde şu kısayolu kullanıyoruz.

$ strace $(pidof apache2 |sed ‘s/\([0-9]*\)/\-p \1/g’)

Post a Comment

You must be logged in to post a comment.