lsof
又稱:列出打開的檔案
簡短回答
lsof是一個「終端機」指令,會列出每個程序打開的檔案、檔案夾和網路連線。在Mac上,它能回答哪個程序在使用某個檔案、是什麼讓磁碟無法退出,以及是什麼在監聽某個連接埠。
lsof是list open files(列出打開的檔案)的縮寫,隨macOS內建。後面什麼都不加就執行,它會印出好幾千行,每個打開的檔案一行,所以幾乎總是會給它一個檔案、檔案夾、磁碟或連接埠來縮小範圍。
不加sudo時,它只顯示你自己的程序。加上之後,macOS自己的程序也會包括在內,例如Spotlight的。
值得知道的lsof指令
每個都用路徑、連接埠或程序來縮小範圍。
lsof /path/to/file:什麼打開了這個檔案sudo lsof /Volumes/NAME:磁碟上打開的所有項目lsof +D /path/to/folder:檔案夾中打開的所有項目lsof -nP -iTCP:3000 -sTCP:LISTEN:什麼在監聽連接埠3000lsof -p <PID>:某個程序打開的每個檔案
如何解讀輸出結果
COMMAND是程序名稱,最多顯示九個字元,PID是它的編號,USER是執行它的使用者。FD說明檔案是怎麼打開的:數字後面加r表示讀取、w表示寫入、u表示兩者皆是,cwd是程序工作所在的檔案夾,txt是程式本身和它載入的程式庫。NAME是路徑或網路位址。
為什麼lsof很慢,或印出警告
用+D查看大型檔案夾時,會讀取底下的每個檔案,可能要花好幾分鐘。不加sudo時,出現無法讀取某些檔案的警告是正常的。
大家常問的問題
lsof是什麼的縮寫?
List open files,也就是列出打開的檔案。
Mac上有內建lsof嗎?
有。它隨macOS內建,位於/usr/sbin/lsof。
為什麼lsof什麼都沒顯示?
你的程序都沒有打開這個檔案。加上sudo執行,就會包括macOS和其他使用者執行的程序。
相關詞條
逐步教學:磁碟無法退出。
想找比活動監視器更好的工具?請參閱Mac上最好用的活動監視器替代方案,或瀏覽詞彙表中的所有詞條。