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 参数,来提示一下,是否真的杀死这个进程.