首页 > linux下如何umount正在被进程访问的磁盘

linux下如何umount正在被进程访问的磁盘

不能使用lsof之类工具找出访问磁盘的进程,要求使用linux api找出所用访问磁盘的进程,并kill。


fuser -ki <磁盘阵列的挂载点>
fuser是专门用来作这方面的工作的。如果有使用磁盘阵列的程序,可以将其杀死,但是,为了谨防万一使用 -i 参数,来提示一下,是否真的杀死这个进程.


我自己想了下,linux应该是没有原生API可以实现的,至于lsof和上面的fuser之类的实现原理,应该是遍历/proc/下面所有pid的fd目录,该目录下的连接文件的路径匹配磁盘路径,说明该进程占用了磁盘。举例:

~ # ls -l /proc/$pid/fd/
lr-x------    1 root     root            64 Dec 31 09:23 0 -> /dev/null
lrwx------    1 root     root            64 Dec 31 09:23 1 -> /dev/console
lrwx------    1 root     root            64 Dec 31 09:23 2 -> /dev/console
l-wx------    1 root     root            64 Dec 31 09:23 3 -> /media/sdcard/xx
【热门文章】
【热门文章】