SystemTap 是一種新穎的 Linux 內核診斷工具,提供了一種從運行中的 Linux 內核快速和安全地獲取資訊的能力。SystemTap 是內核開發人員和系統管理員的福音,因為這使得他們可以通過編寫或者重用簡單的腳本來收集內核的實時數據,而不需要再忍受修改源碼、編譯內核、重啟系統的漫長煎熬。本文介紹了 SystemTap 的安裝、使用和基本原理,並用一些有趣的例子揭示了 SystemTap 提供的強大能力。
下面這個簡單的例子可以列印出在過去的5秒鐘裏調用次數最多的那些 syscall。
#!/usr/bin/env stap
#
# display the top 10 syscalls called in last 5 seconds
#
global syscalls
function print_top () {
cnt=0
log ("SYSCALL\t\t\t\tCOUNT")
foreach ([name] in syscalls-) {
printf("%-20s\t\t%5d\n",name, syscalls[name])
if (cnt++ == 10)
break
}
printf("--------------------------------------\n")
delete syscalls
}
probe syscall.* {
syscalls[probefunc()]++
}
probe timer.ms(5000) {
print_top ()
}
或著是另外一個例子:
看看是誰在偷偷動我的文件
有時候,我們如果中了惡意的病毒軟體,會發現某些文件莫名其妙的被修改,下面這個例子可以幫你監視誰在修改你的文件。
#!/usr/bin/env stap
#
# monitor who is messing my file of secrets
#
probe generic.fop.open {
if(filename == "secrets")
printf("%s is opening my file: %s\n", execname(), filename)
}
沒有留言:
張貼留言