扫码关注官方订阅号
不能使用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 参数,来提示一下,是否真的杀死这个进程.
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我自己想了下,linux应该是没有原生API可以实现的,至于lsof和上面的fuser之类的实现原理,应该是遍历/proc/下面所有pid的fd目录,该目录下的连接文件的路径匹配磁盘路径,说明该进程占用了磁盘。举例:
fuser -ki <磁盘阵列的挂载点>
fuser是专门用来作这方面的工作的。如果有使用磁盘阵列的程序,可以将其杀死,但是,为了谨防万一使用 -i 参数,来提示一下,是否真的杀死这个进程.