Linux
您如何確定哪個程序/程序正在創建文件?
假設有一個文件在我刪除它之後仍然自動出現在我的主目錄中。對它一無所知,有沒有辦法弄清楚是什麼把那個文件放在那裡?有沒有辦法追踪創建它的程序/程序?
一種選擇是使用
sysdig
:開源系統監控應用程序。使用它,您可以按名稱監視文件的活動。假設您想查看創建名為 的文件的程序/tmp/example.txt
:# sysdig fd.name=/tmp/example.txt 567335 16:18:39.654437223 0 touch (5470) < openat fd=3(<f>/tmp/example.txt) dirfd=-100(AT_FDCWD) name=/tmp/example.txt flags=70(O_NONBLOCK|O_CREAT|O_WRONLY) mode=0666 567336 16:18:39.654438248 0 touch (5470) > dup fd=3(<f>/tmp/example.txt) 567337 16:18:39.654438592 0 touch (5470) < dup res=0(<f>/tmp/example.txt) 567338 16:18:39.654439629 0 touch (5470) > close fd=3(<f>/tmp/example.txt) 567339 16:18:39.654439764 0 touch (5470) < close res=0 567342 16:18:39.654441958 0 touch (5470) > close fd=0(<f>/tmp/example.txt) 567343 16:18:39.654442111 0 touch (5470) < close res=0
從該輸出中,您可以看到名為
touch
pid 5470 的程序打開了該文件。如果您想了解更多資訊,可以在收集系統呼叫跟踪的“擷取模式”下執行:
# sysdig -w /tmp/dumpfile.scap
然後等待文件創建完成,然後停止
sysdig
執行:# csysdig -r /tmp/dumpfile.scap
這會讓你探索發生的一切。您可以按
<F2>
並選擇Files
,按<F4>
搜尋文件名,然後按<F6>
“探勘”(這將顯示類似於上述命令的輸出)。這樣,您就可以使用相同的方法來查找有關實際創建文件的程序的資訊。有一個 GUI 版本的
csysdig
calledsysdig-inspect
,如果這更像是你的一杯茶的話。