当 `fuser` 没有显示任何内容时,如何找出保存文件或挂载点的内容?

当 `fuser` 没有显示任何内容时,如何找出保存文件或挂载点的内容?

我有一台拒绝暂停的笔记本电脑。在最新的 Ubuntu 上,我关闭它的唯一方法是按住电源按钮。

原因是因为我有一个nfs共享已离线,并且某些东西仍在尝试向其提交数据。我杀死了 中列出的所有内容sudo fuser,但它仍然很忙。即使 poweroff 命令也会因为无法关闭文件系统而卡住。

我怎样才能找出仍然持有它的是什么,或者killunmount,并强制暂停,而不是手动、强制、关闭?

答案1

有时,如果访问文件不需要打开它,您可能不会在任何进程文件描述符中看到该文件。例如,stat(2)系统调用将获取文件的状态而不实际打开它,因此您不会在进程的文件描述符中看到它。

您可以尝试搜索任何处于 D 状态(不间断睡眠)的进程,并使用常识来尝试了解这是否是使磁盘保持繁忙的进程。

ps -eo pid,ppid,start,user,state,comm |grep -w D

如果幸运的话,您将找到持有 NFS 共享的进程并能够杀死它,然后是unmount磁盘。

答案2

如果您不太关心是什么阻碍了您,只是想关闭/暂停等,您应该能够使用它来强制卸载卷,并警告可能的数据丢失(但看不到它有任何影响)比硬关机更糟糕)。即便如此,只有当 NFS 无法合法访问时您才会真正想要执行此操作。

umount -f -l /foo/nfs

以供参考: https://linux.die.net/man/8/umount

相关内容