- با استفاده از این ابزار میتوان سیگنالهایی که به سمت یک ابزار (پروسه) ارسال میشود را مانیتور کرد.
- استفاده از strace به دو صورت است.
- اجرای ابزار در قالب strace
- اتصال PID پروسه به strace
- لازم به ذکر است در برخی از ابزارها مثل redis دیده شده که با اتصال strace به PID آن ، کارایی یا Performance آن ابزار (redis) پایین میآید.
- به منظور اتصال یک PID به strace به صورت زیر عمل کنید.
|
1 |
# strace -p 123321 |
- از سویچ t- برای نمایش زمان میتوان استفاده نمود.
- نمونهای از خروجی strace برای PID مربوط به دستور sleep 100 به شرح زیر است.
|
1 2 3 4 5 6 7 |
# 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 <span style="color: #ff0000;"><strong>+++ exited with 0 +++</strong></span> |
- در مثال بالا ابزار sleep به سیگنالی مناسب و خوب به کارکرد خود پایان داده است لذا خروجی (قرمز رنگ) بالا حاصل شده است.
- در صورتی که با دیگر سیگنالها نظیر شمارهی ۹ یا ۱۱ ، کارکرد ابزار sleep به پایان رسد ، خروجیای مشابه زیر حاصل خواهد شد.
|
1 2 3 4 |
# strace -t -p 3704 strace: Process 3704 attached 10:00:58 restart_syscall(<... resuming interrupted read ...>) = ? 10:01:06 <strong><span style="color: #ff0000;">+++ killed by SIGKILL +++</span></strong> |
- به منظور مانیتور و دنبال کردن سیگنالهای ارسالی به سمت پروسه در پروسههای Child ، باید از سویچ f- استفاده نمود.
|
1 |
# strace -t <span style="color: #ff0000;"><strong>-f</strong></span> -p 3705 |
- نکته : در صورتی که strace به PID مربوط به یک Shell (مثلا ترمینال باز شده) متصل شود ، تمام کارکترهای تایپ شده توسط کاربر مانیتور میشود.