不能使用lsof之类工具找出访问磁盘的进程,要求使用linux api找出所用访问磁盘的进程,并kill。
我自己想了下,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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。