Linux

您如何確定哪個程序/程序正在創建文件?

  • April 24, 2019

假設有一個文件在我刪除它之後仍然自動出現在我的主目錄中。對它一無所知,有沒有辦法弄清楚是什麼把那個文件放在那裡?有沒有辦法追踪創建它的程序/程序?

一種選擇是使用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

從該輸出中,您可以看到名為touchpid 5470 的程序打開了該文件。

如果您想了解更多資訊,可以在收集系統呼叫跟踪的“擷取模式”下執行:

# sysdig -w /tmp/dumpfile.scap

然後等待文件創建完成,然後停止sysdig執行:

# csysdig -r /tmp/dumpfile.scap

這會讓你探索發生的一切。您可以按<F2>並選擇Files,按<F4>搜尋文件名,然後按<F6>“探勘”(這將顯示類似於上述命令的輸出)。這樣,您就可以使用相同的方法來查找有關實際創建文件的程序的資訊。

有一個 GUI 版本的csysdigcalled sysdig-inspect,如果這更像是你的一杯茶的話。

引用自:https://unix.stackexchange.com/questions/514070