2013-06-04 120 views
1

我想捕獲文件系統上的所有系統調用的細節。例如。對於write系統調用,我想記錄目標文件,寫入的字節數和發生寫入的偏移量。在Linux平臺上捕獲文件系統系統調用

目前,我想用inotify來實現這樣的記錄器。但是,它不能提供這樣的細節。例如。對於write,它不提供寫入的字節數和偏移量。 另一種方法是在保險絲上使用bbfs。但是,它會在記錄系統調用並將用戶操作延遲到一些不可容忍的程度時引入開銷。

是否有一些庫可以捕獲文件系統上的系統調用,就像登錄進程發出的所有系統調用時一樣?ptrace

回答

1

還有很多在Linux中進行跟蹤的選項。但這聽起來像是一個非常簡單的例子。您是否僅使用strace實用程序進行了調查?它有很多選項可以控制跟蹤粒度,將參數記錄到幾乎所有的系統調用(包括緩衝區內容,如果你想要的話),並存在和基本上工作,除了安裝包之外沒有任何設置。

+0

不,我沒有調查'strace'。謝謝你的提示。 –

+0

只需瀏覽手冊頁,似乎'strace'是面向過程的。儘管我希望在不區分進程的情況下記錄文件系統上的所有系統調用。這可以嗎? –

+0

我錯過了那一點。如果您想在內核級別進行跟蹤,您需要查看諸如Systemtap和LTTNG之類的內容。這些功能非常強大,但比諸如strace之類的要多得多。基本上,當內核遇到特定事件時,你會編寫內核中很少的代碼位,並且充分利用這些工具要求你對內核的組織方式有一個合理的瞭解。 –

1

如何使用包裝器編寫自己的分析工具?見GCC -wrapper

-wrapper
調用的包裝方案下的所有子命令。包裝程序的名稱及其參數作爲逗號分隔的列表傳遞。

+0

感謝您的回覆。 –