詞彙表/出問題的時候

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:什麼在監聽連接埠3000
  • lsof -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上最好用的活動監視器替代方案,或瀏覽詞彙表中的所有詞條。