Mar*_*usQ 98
查看lsof命令(列出打开的文件) - 它可以告诉您哪些进程正在保持打开状态.有时这很棘手,但往往是sudo lsof | grep (your device name here)
为你做的那么简单.
Ben*_*Ben 23
您应该使用该fuser /dev/cdrom
命令.
例如./dev/cdrom
将使用返回进程的pid -k
.
如果您尝试卸载,可以使用该man fuser
开关终止该过程(请参阅参考资料fuser /dev/cdrom
).
lsof +f -- /mountpoint
Run Code Online (Sandbox Code Playgroud)
(列出使用挂载在/ mountpoint上的文件的进程.特别适用于查找使用已安装的USB记忆棒或CD/DVD的进程.
lsof和fuser确实是找到保持某个文件打开的进程的两种方法.如果您只是想让umount成功,那么您应该调查它的-f和-l选项.
打开文件的进程是常见的罪魁祸首。显示它们:
lsof +f -- <mountpoint or device>
Run Code Online (Sandbox Code Playgroud)
/dev/<device>
使用而不是使用有一个优点 /mountpoint
:挂载点将在 后消失umount -l
,或者它可能被覆盖的挂载隐藏。
fuser
也可以使用,但我认为lsof
有一个更有用的输出。然而,fuser
当涉及到杀死导致你的戏剧性的进程时,它很有用,这样你就可以继续你的生活。
列出文件<mountpoint>
(请参阅上面的警告):
fuser -vmM <mountpoint>
Run Code Online (Sandbox Code Playgroud)
仅以交互方式终止打开文件以供写入的进程:
fuser -vmMkiw <mountpoint>
Run Code Online (Sandbox Code Playgroud)
以只读方式重新挂载 ( mount -o remount,ro <mountpoint>
) 后,可以安全地终止所有剩余进程:
fuser -vmMk <mountpoint>
Run Code Online (Sandbox Code Playgroud)
罪魁祸首可能是内核本身。在您尝试安装的文件系统上安装另一个文件系统umount
会造成麻烦。检查:
mount | grep <mountpoint>/
Run Code Online (Sandbox Code Playgroud)
对于环回安装,还请检查以下输出:
losetup -la
Run Code Online (Sandbox Code Playgroud)
匿名 inode可以通过以下方式创建:
open
带O_TMPFILE
)这些是最难以捉摸的神奇宝贝类型,并出现在lsof
的TYPE
专栏中(手册页a_inode
中未记录 )。lsof
它们不会出现在 中lsof +f -- /dev/<device>
,因此您需要:
lsof | grep a_inode
Run Code Online (Sandbox Code Playgroud)
要杀死持有匿名 inode 的进程,请参阅:列出当前 inotify 监视(路径名,PID)。
小智 5
这就是为什么存在“ fuser -m / mount / point”的原因。
顺便说一句,我不认为“ fuser”或“ lsof”将指示内核模块何时拥有资源,尽管我通常没有这个问题。
归档时间: |
|
查看次数: |
128560 次 |
最近记录: |