分类:
2008-01-09 17:12:28
在linux中可以挂载的windows下的共享,当卸载的时候经常会碰到device is busy的情况:
[root@itc-205013 ~]# umount ips/php
umount: /home/sxg/ips/php: device is busy
其实这个问题好解决:
出现这种情况的根本原因是该目录正在被使用,一般情况下将所有控制台cd到/根目录,并退出该目录中执行的程序就行了。
但是有时候,我们可能并不知道或者忘记了什么程序正在执行了,下边我就介绍一个方法:
在/proc目录下有一些以整数命名的文件夹,这些整数其实是进程号,文件夹包含了进程所使用的资源。
[root@itc-205013 2586]# pwd
/proc/2586
[root@itc-205013 2586]# ll
lrwxrwxrwx 1 root root 0 Jan 9 13:13 cwd -> /
lrwxrwxrwx 1 root root 0 Jan 9 13:13 exe -> /sbin/klogd
其中exe字段的意思是当前进程的可执行文件路径
其中cwd字段的意思是当前程序的当前目录
从上述描述可以找到方法:
#cd /proc
#ls –R –l . |grep php
lrwxrwxrwx 1 root root 0 Jan 9 16:59 cwd -> /home/sxg/ips/php/nicu
lrwxrwxrwx 1 root root 0 Jan 9 16:37 exe -> /home/sxg/ips/php/nicu/snortsxg
这下子知道那个程序导致卸载失败了吧,呵呵。
[root@itc-205013 proc]# ps aux |grep snortsxg
root 4187 0.0 0.0 2900 288 pts/2 S 13:15 0:00 ./snortsxg
[root@itc-205013 proc]# kill 4187
[root@itc-205013 ~]# umount ips/php
卸载成功
另外fd目录中是当前进程所打开的所有文件。
通过它,我们可以确定某一个文件被那几个进程打开,你可以自己想象怎么办了,hoho。
Sxg