Lsof

lsof:顯示以讀寫方式打開的文件

  • December 4, 2017

當我嘗試將分區重新掛載為read-only時,出現錯誤/foo is busy。我可以列出所有打開的/foo文件

lsof /foo

但這並沒有告訴我文件是打開的read-only還是read-write. 有沒有辦法只列出打開的文件read-write

要具體回答這個問題,您可以這樣做:

lsof /foo | awk 'NR==1 || $4~/[0-9]+u/'

這將顯示read-write在掛載點下打開的文件foo。但是,您可能真正想做的是列出所有可以寫入的文件。這將包括打開的文件和打開的write-only文件read-write。為此,你會這樣做:

lsof /foo | awk 'NR==1 || $4~/[0-9]+[uw]/'

這些命令應該可以工作,前提FD是輸出中的第 4 個欄位,並且其他欄位都不是空白的。當我在命令中包含路徑時,我在 Debian 上就是這種情況lsof,但是如果我不列印並且TID有時為空白的額外欄位(並且會混淆awk)。lsof發行版或版本之間的里程可能會有所不同。

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