usb 热插拔 linux

开发时候发现拷贝过程中,强制拔出的话,df后sda1这个设备仍然在,有的时候可以用umount 命令卸载,有时候卸载提示忙碌。
/dev/sda1 3944760 69876 3874884 2% /mnt/udisk

求助大侠,有什么方法解决。

/dev/sda1 已经没有了。经常出这种问题。

第1个回答  2013-05-18
先 umount 再插拔啊,linux 不会自动 umount 的,况且你还在拷贝过程中。。。
碰见卸载不了你只能 ps -aux 找到用该设备的进程 Kill 掉才能 umount ..
有个 autofs 貌似可以自动 umount 。。。不过没用过。追问

模拟异常场景,发现的问题。
我用的mdev检测插拔事件,拷贝过程中强制拔的话偶尔会出现这种情况。
有的时候可以umount 掉,有的时候就报上面的错还删不掉。
有没有什么解决方案

追答

呵呵,等大神吧,俺只是普通用户,没做过深度开发和应用

第2个回答  2013-05-18
可以用lsof,或者fuser列出挂载点还有那些程序在运行
lsof /path 得到运行程序的PID,kill掉
fuser /dev/sda1 也可以得到正在运行程序的PID,kill之后
umount追问

busybox 里面 没有这些命令

发现一个进程有异常,但是我kill不掉,这个是设备内核上的。

正常的话那个进程就不在了。

还有什么其他方法?

追答

不好意思,知道的就那么多,我没搞过开发,没发言权
建议你还是去google搜一下,或者到搞嵌入式开发的论坛上去找找答案

本回答被提问者采纳
第3个回答  2013-05-18
kill 掉拷贝的进程再umount试试追问

怎么查看拷贝的进程,我强拔掉了,不知道这个进程还在不在了

追答

ps -ef | grep name

其中这个name 是你copy时用到的,你是用指令的话 那就 grep cp
如果是图形界面拷贝的,我也不清楚怎么查是哪个进程了,这个要根据经验吧,用什么就grep什么,或者直接 ps -ef 慢慢挑