strace command in linux

  • با استفاده از این ابزار می‌توان سیگنال‌هایی که به سمت یک ابزار (پروسه) ارسال می‌شود را مانیتور کرد.
  • استفاده از strace به دو صورت است.
    • اجرای ابزار در قالب strace
    • اتصال PID پروسه به strace
  • لازم به ذکر است در برخی از ابزارها مثل redis دیده شده که با اتصال strace به PID آن ، کارایی یا Performance آن ابزار (redis) پایین می‌آید.

  • به منظور اتصال یک PID به strace به صورت زیر عمل کنید.
# strace -p 123321
  • از سویچ t- برای نمایش زمان می‌توان استفاده نمود.
  • نمونه‌ای از خروجی strace برای PID مربوط به دستور sleep 100 به شرح زیر است.
# strace -t -p 3651
strace: Process 3651 attached
09:57:01 restart_syscall(<... resuming interrupted read ...>) = 0
09:58:31 close(1) = 0
09:58:31 close(2) = 0
09:58:31 exit_group(0) = ?
09:58:31 +++ exited with 0 +++
  • در مثال بالا ابزار sleep به سیگنالی مناسب و خوب به کارکرد خود پایان داده است لذا خروجی (قرمز رنگ) بالا حاصل شده است.
  • در صورتی که با دیگر سیگنال‌ها نظیر شماره‌ی ۹ یا ۱۱ ، کارکرد ابزار sleep به پایان رسد ، خروجی‌ای مشابه زیر حاصل خواهد شد.
# strace -t -p 3704
strace: Process 3704 attached
10:00:58 restart_syscall(<... resuming interrupted read ...>) = ?
10:01:06 +++ killed by SIGKILL +++
  • به منظور مانیتور و دنبال کردن سیگنال‌های ارسالی به سمت پروسه در پروسه‌های Child ، باید از سویچ f- استفاده نمود.
# strace -t -f -p 3705
  • نکته : در صورتی که strace به PID مربوط به یک Shell (مثلا ترمینال باز شده) متصل شود ، تمام کارکترهای تایپ شده توسط کاربر مانیتور می‌شود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *