我正在使用「strace -f -T -tt -o foo.txt -p 1234」來打印系統調用花費的時間。這使得輸出文件變得龐大,有沒有辦法打印花費時間大於1秒的系統調用。我可以稍後從文件中找出它,但有沒有更好的方法?linux strace:如何過濾系統調用需要一秒以上的時間
1
A
回答
0
如果我們只是簡單地省略-o foo.txt
參數,則輸出將轉換爲標準輸出。我們可以把它管道grep和重定向到文件:
strace -f -T -tt -p 1234 | grep pattern > foo.txt
要觀看在同一時間輸出:
strace -f -T -tt -p 1234 | grep pattern | tee foo.txt
如果命令只到作爲一個參數傳遞的文件,我們要過濾/重定向輸出,第一步是檢查它是否實現了幾許約定:您可以指定標準輸入或輸出使用-
作爲文件名參數:
some_command - | our_pipe > file.txt
如果不是,則辦法是使用擊進程替換替換語法:>(output command)
和<(input command)
:
some_command >(our_pipe > file.txt)
的方法替換語法擴展成一個令牌適合作爲文件名參數命令或功能。當程序打開該令牌時,它會根據方向獲取文件描述符到命令的輸入或輸出。
通過進程替換,我們可以重定向頑固程序的輸入或輸出,這些頑固程序只對名稱作爲參數傳遞的文件起作用,並且不支持任何要求使用標準輸入或輸出代替文件。
進程替換使用的令牌是平臺相關的;我們可以看到它使用的是什麼echo
。例如在GNU/Linux,猛砸採取/dev/fd
操作系統功能的優勢:
$ echo <(ls -l)
/dev/fd/63
0
您可以使用下面的命令:
strace -T command 2>&1 >/dev/null | awk '{gsub(/[<>]/,"",$NF)}$NF+.0>1.0'
說明:
strace -T
增加了時間花在系統調用結束的那一行,附上<...>
2>&1 >/dev/null | awk
pipe stderr到awk
。 (strace
將其輸出寫入stderr!)awk
命令將<>
從最後一個字段$NF
中刪除,並打印出花費時間高於一秒的行。
也許你也想通過閾值作爲變量awk命令:
strace -T command 2>&1 >/dev/null \
| awk -v thres=0.001 '{gsub(/[<>]/,"",$NF)}$NF+.0>thres+.0'
相關問題
- 1. Strace命令只顯示系統調用
- 2. android系統中的'strace'
- 3. 如何使用「strace」知道組件的系統調用
- 4. linux - 在多處理器系統上以微秒精度打印當前時間
- 5. strace如何讀取系統調用sys_open的文件名?
- 6. 需要更多的見解偵聽系統調用的Linux
- 7. Linux系統調用
- 8. 過濾掉系統調用的警告
- 9. 如何在Perl中以納秒計算系統時間?
- 10. 時間過濾器不適用於60以上但低於70秒的時間
- 11. 如何通過內核空間中的另一個系統調用進行系統調用
- 12. 如何找出這些syscall_983045,syscall_322系統調用在strace中輸出的內容?
- 13. 如何獲取當前系統時間(毫秒或納秒)?
- 14. Linux:通過ptrace()執行系統調用()
- 15. xcode 4.5切換標籤需要2秒以上的時間
- 16. 如何禁止系統調用GNU/Linux
- 17. Grails:部署時間很慢。 '解決依賴關係...'需要10秒以上
- 18. 如何以2毫秒的精度同步2個系統之間的時間?
- 19. 在不需要的系統調用時引發異常
- 20. 在我的系統上需要32個以上的USB聲卡
- 21. 在SUSE linux上綁定系統調用
- 22. 在Linux上seteuid系統調用?
- 23. 如何清除Linux CentOS系統上主系統驅動器上的空間?
- 24. 如何根據Linux系統調用實現過程的背景?
- 25. I/O系統調用需要退出
- 26. 如何使用strace僅顯示需要很長時間的通話?
- 27. 如何過濾系統應用程序?
- 28. 爲什麼不strace記錄我所有的系統調用?
- 29. jQuery - 僅在ajax調用需要一秒以上時才顯示加載圖像?
- 30. Firebase onAuthStateChanged回調有時需要20秒以上