android设备拔掉u盘后,在系统里面的挂载路径依然存在,手动卸载会提示 Device or resource busy
时间: 2024-02-06 10:10:29 浏览: 24
这种情况一般是因为系统中某个进程或者应用程序正在使用该挂载路径,导致无法卸载。你可以尝试通过以下步骤来解决这个问题:
1. 打开终端或者命令行窗口,输入以下命令查看哪些进程或者应用程序正在使用该挂载路径:
```
sudo lsof | grep /path/to/mount/point
```
其中,`/path/to/mount/point` 是你想卸载的挂载路径。
2. 找到使用该挂载路径的进程或者应用程序,并将它们关闭或者终止。
3. 再次尝试卸载该挂载路径,如果仍然无法卸载,则可以尝试强制卸载:
```
sudo umount -l /path/to/mount/point
```
其中,`-l` 参数表示强制卸载。
请注意,强制卸载可能会导致数据丢失或者损坏,请谨慎使用。同时,建议在卸载前备份重要数据。
相关问题
我现在在分析一个android系统问题,把u盘插入到安卓设备里面,系统给予的挂载路径是/mnt/media_rw/A804-B928 ,拔掉u盘后/mnt/media_rw/A804-B928路径没有被成功卸载,导致下次继续插入u盘后就不能挂载成功
这个问题可能是由于系统没有正确卸载挂载点导致的。您可以尝试使用以下步骤来手动卸载挂载点:
1. 查看当前系统中已经挂载的设备:
```
$ mount
```
2. 找到挂载点 `/mnt/media_rw/A804-B928` 对应的设备,记录设备名称,例如 `/dev/sda1`。
3. 使用 `umount` 命令手动卸载挂载点:
```
$ umount /mnt/media_rw/A804-B928
```
4. 如果卸载不成功,可能是因为当前路径下有其他进程正在使用该挂载点,您可以使用 `fuser` 命令查找并杀掉相关进程:
```
$ fuser -km /mnt/media_rw/A804-B928
```
5. 再次尝试使用 `umount` 命令卸载挂载点。
卸载成功后,您可以再次插入 U 盘,系统应该能够成功挂载并分配新的挂载路径。
现在有个需求:u盘里面有一个工厂apk,u盘插入android设备后客制化的sdmc apk会接收到ACTION_MEDIA_MOUNTED广播后使用pm.getPackageArchiveInfo(absPath, PackageManager.GET_ACTIVITIES)去获取u盘里面的工厂apk信息,在这个时候突然把u盘拔掉,在系接收到ACTION_MEDIA_EJECT或者ACTION_MEDIA_UNMOUNTED广播后,可以做哪些处理使得U盘可以成功卸载,不会再下次插入的时候系统提示“vold : ForceUnmount failed: Device or resource busy”
可以通过以下步骤来避免出现“vold: ForceUnmount failed: Device or resource busy”错误:
1. 在接收到ACTION_MEDIA_EJECT或ACTION_MEDIA_UNMOUNTED广播后,先停止所有使用该U盘的进程和服务。
2. 然后通过PackageManager获取U盘上工厂apk的包名,并使用如下命令强制停止该应用:
```
adb shell am force-stop <包名>
```
3. 最后卸载U盘:
```
adb shell umount /mnt/usb_storage
adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///mnt/sdcard
```
注意,上述命令需要在root权限下执行,如果设备没有root权限,则只能等待系统自动卸载U盘,或者提示用户手动卸载。