我想攔截Linux服務器中的每個磁盤寫入操作。詳細地說,我想在每次磁盤寫入操作發生的時候捕獲每個磁盤寫入操作,並能夠確定哪個進程發起了調用,它正在嘗試寫入的位置等等。爲了簡單起見,現在我只專注於ext3。我意識到auditfs和其他的「觀察者」,一旦手術發生就會讓你知道。如前所述,我想攔截它,並能夠檢索有關操作的所有信息(過程信息,目標位置,正在寫入的內容)。如果存在中斷/回調機制(例如,通過進程,進程組或會話 - pid,pgid,sid接收任何寫入操作的通知),則會更好。在Linux中攔截磁盤寫入
感謝
你想攔截' write()'系統調用,還是截取數據實際發送到磁盤?因爲後者可能因緩衝而延遲。而Unix使用共享緩衝區緩存,所以多個進程可能是「負責任的」。如果進程使用內存映射,則不會有'write()'。 – Barmar
感謝Barmar的快速響應。我想在其他地方複製寫入操作(也可能是刪除操作)。我希望在磁盤寫入過程中攔截可能是正確的。我不明白'多個過程可能是負責任的'。我對執行寫入的高級過程感興趣。請建議我最好的選擇。謝謝。 – user630286
兩個進程在同一個文件上都使用'mmap()'。它們通過這個共享內存對文件的同一頁面進行一些更新。最終頁面刷新到磁盤 - 應該返回哪些進程信息? – Barmar