如何找出阻止卸载的进程?

当我做

sudo umount /media/KINGSTON 

我有

 umount: /media/KINGSTON: device is busy. 

我关闭所有窗口并确保所有shell都指向其他目录。 如何找到阻止umount的进程?

打开一个终端:

 fuser -c /media/KINGSTON 

它将输出如下内容:

 /media/KINGSTON/: 3106c 11086 

这将为您提供使用此卷的进程的pid。 pid末尾的额外字符将提供一些额外的信息。 (c在3106c)

c – 该进程使用该文件作为其当前工作目录
m – 使用mmap映射文件
o – 该进程将其用作打开的文件
r – 文件是进程的根目录
t – 进程正在以文本文件的forms访问文件
y – 此文件是进程的控制终端

所以要卸载只是杀死那个pid并重新尝试卸载

 sudo kill -9 3106 11086 sudo umount /media/KINGSTON 

注意:要查找这些pids的确切应用程序名称,可以使用此命令

 cat /proc//cmdline 

例如: cat /proc/11086/cmdline

这将输出如下所示。

  evince^@/media/KINGSTON/Ubuntu-guide.pdf^@ 

希望这会有所帮助

最有用的工具是lsof 安装lsof 。 它显示了哪些进程使用的文件。 如果/media/KINGSTON是挂载点(设备名称也可以),则以下命令显示此挂载点上正在使用的所有文件:

 lsof /media/KINGSTON 

如果以普通用户身份运行此命令,它将只显示您自己的进程¹。 运行sudo lsof /media/KINGSTON以查看所有用户的进程。

lsof的输出如下所示:

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME zsh4 31421 gilles cwd DIR 8,1 4096 130498 /var/tmp zsh4 31421 gilles txt REG 8,1 550804 821292 /bin/zsh4 zsh4 31421 gilles mem REG 8,1 55176 821326 /usr/lib/zsh/4.3.10/zsh/complist.so zsh4 31421 gilles 12r REG 8,1 175224 822276 /usr/share/zsh/functions/Completion.zwc 

COMMAND列显示程序可执行文件的名称, PID列显示进程ID。 NAME列显示文件名; 您可能会看到(deleted)文件是否在打开时被删除(当文件被删除时,它不再具有名称,但它仍然存在,直到最后一个使用它的进程关闭文件)。 USER应该是不言自明的。 除了FD之外,其他列在这里并不重要,它显示了进程如何使用该文件:

  • cwd :当前工作目录
  • txt :程序可执行文件²
  • mem :内存映射文件(在这里,将其视为一个打开的文件)
  • 一个数字:一个实际的打开文件; 后续字母表示打开模式,例如r表示读数, w表示写入

没有机械方法来定位文件打开的窗口(这实际上在技术上没有意义:如果一个进程有多个窗口,一个文件与一个窗口或另一个窗口没有特别关联),甚至没有任何简单的识别方法进程的窗口(当然进程不必有任何窗口)。 但通常命令名和文件名足以找到罪犯并正确关闭文件。

如果您无法关闭文件并且只想结束它,则可以使用kill 31421 (其中31421是进程ID)或kill -HUP 31421 (“挂断”) kill -HUP 31421进程。 如果普通杀戮不能解决问题,可以用极端的偏见kill -KILL 31421kill -KILL 31421

有一个用于lsof, glsof的GUI,但它还没有为黄金时间做好准备,到目前为止还没有为Ubuntu打包。

¹Lsof可以列出有关其他用户进程的一些信息,但它不会检测到挂载点,因此如果指定挂载点,则不会列出它们。
² 可执行代码在可执行格式的讨论中通常称为文本。

这也可以帮助:

 lsof | grep \/media\/KINGSTON 

同时fuser命令有了很大的改进。 您可以使用一个命令完成整个作业:

 sudo fuser -ickv /"mountpoint" 

哪里:

  • 参数k杀死违规过程,
  • v预先显示过程及其用户
  • i要求你确认。

如果某些进程抵抗,则再次使用fuser -ickv -9 (或更一般地使用-SIGNAL )再次杀死最顽固的-SIGNAL
但你总能找到一些“不朽”的过程……!