在linux系统中,fuser命令可以显示出当前哪个程序在使用磁盘上的某个文件、mount挂载点、甚至网络端口,并给出程序进程的详细讯息。
假设无法卸载的设备为/var,运行命令:
$ fuser -m -v /var
用户进程号权限命令:
fuser-m -v /var
USER PID ACCESS COMMAND
/var: root 2003 F…. auditd
root 2037 F…. syslogd
root 2114 F…m pcscd
root 2230 F.c.. master
postfix 2241 F.c.. qmgr
root 2248 F.c.. crond
root 2568 F.c.. atd
root 2659 ..c.. named
postfix 4230 F.c.. pickup
参数说明:
-m 参数显示所有使用指定文件系统的进程,后面可以跟挂载点,或是dev设备;
-v参数给出详细的输出,可以看出,原来是gqview这个程序还在霸占着移动设备,fuser还给出了程序的进程号。
获知进程号,便可以自由处置这个程序了。
此命令可以添加一个-k参数:
fuser -m -k /var
自动杀死占用/var的程序。
如果需要杀死进程前确认的话,还可以加一个-i参数:
$ fuser -m -v -i -k /var
用户进程号权限命令
/var: galeki 2659 ..c.. named
杀死进程2659 ? (y/N)
通过fuser命令,完成进程的查找,继续停掉相关进程,然后umount,便不会出现Device is busy的提示了。