当我尝试将分区重新挂载为 时read-only,出现错误/foo is busy。我可以列出所有文件打开/foo与
lsof /foo
Run Code Online (Sandbox Code Playgroud)
但这并没有告诉我文件是打开的read-only还是read-write. 有没有办法只列出打开的文件read-write?
要具体回答这个问题,你可以这样做:
lsof /foo | awk 'NR==1 || $4~/[0-9]+u/'
Run Code Online (Sandbox Code Playgroud)
这将显示read-write在挂载点下打开的文件foo。但是,您可能真正想要做的是列出所有为写入而打开的文件。这将包括打开的文件 awrite-only以及打开的read-write. 为此,您将执行以下操作:
lsof /foo | awk 'NR==1 || $4~/[0-9]+[uw]/'
Run Code Online (Sandbox Code Playgroud)
这些命令应该可以工作,前提FD是输出中的第 4 个字段并且其他字段都不是空白的。这就是我在 Debian 上的情况,当我在lsof命令中包含一个路径时,但是如果我不这样做,它会打印和额外的TID字段,这些字段有时是空白的(并且会混淆awk)。发行版或lsof版本之间的里程可能会有所不同。
| 归档时间: |
|
| 查看次数: |
14109 次 |
| 最近记录: |