84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
不能使用lsof之类工具找出访问磁盘的进程,要求使用linux api找出所用访问磁盘的进程,并kill。
认证0级讲师
我自己想了下,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
fuser -ki <磁盘阵列的挂载点>fuser是专门用来作这方面的工作的。如果有使用磁盘阵列的程序,可以将其杀死,但是,为了谨防万一使用 -i 参数,来提示一下,是否真的杀死这个进程.
我自己想了下,linux应该是没有原生API可以实现的,至于lsof和上面的fuser之类的实现原理,应该是遍历/proc/下面所有pid的fd目录,该目录下的连接文件的路径匹配磁盘路径,说明该进程占用了磁盘。举例:
fuser -ki <磁盘阵列的挂载点>
fuser是专门用来作这方面的工作的。如果有使用磁盘阵列的程序,可以将其杀死,但是,为了谨防万一使用 -i 参数,来提示一下,是否真的杀死这个进程.