有沒有辦法找出程序讀取文件的位置?它似乎可以與strace或dtrace可行?通過文件跟蹤程序的進度?
爲了澄清問題並給予動機,說我有一個10GB的日誌文件,並就指望的唯一的行數:
$ cat log.txt | sort | uniq | wc -l
我可以檢查該文件cat
在目前是,有效給命令的進展?使用lsof
,我似乎無法得到最後一個文件的讀取,我認爲這是什麼會做的伎倆的偏移:
$ lsof log.txt
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
cat 16021 erik 3r REG 0,22 13416118210 1078133219
編輯:我很抱歉,我給的例子過於狹窄,沒有切中要害。理想情況下,對於任意程序,我希望看到文件讀取發生的位置(不管管道)。
所以你想要窺探第三方流程的I/O?我沒有看到想要監視貓進程的理由。是否有更真實的解釋你真正的追求? – 2013-03-27 21:22:32
這是我真實的世界的解釋。我現在已經運行了這個命令大約30分鐘,並且很高興看到它通過文件所取得的進展。另一個例子:用戶正在從Web服務器下載一個大文件,我如何檢查上次讀取的內容以確定下載進度? – erikreed 2013-03-27 21:24:56