我使用的是 Ubuntu 12.04,当我右键单击闪存驱动器图标(在 Unity 左侧栏中)时,我看到两个让我感到困惑的选项:喷射和安全移除。
我越接近答案这个论坛主题,得出的结论是(对于闪存驱动器)它们都是相等的,并且也相当于使用该umount
命令。然而,最后的断言似乎是错误的。
如果我umount
从控制台使用卸载 flash div,然后使用命令lsblk
,我仍然会看到我的设备(当然,MOUNTPOINT 下没有任何内容)。另一方面,如果我喷射或者安全移除我的闪存驱动器,lsblk
不再列出。
所以,我的问题是,真正能重现行为的控制台命令是什么喷射和安全移除?
答案1
如果您正在使用systemd
,请使用udisksctl
带有选项的实用程序power-off
:
关闭电源
安排安全移除驱动器并关闭电源。在操作系统方面,这包括确保没有进程正在使用驱动器,然后请求将运行中的缓冲区和缓存提交到稳定的存储。
我建议首先卸载该 USB 上的所有文件系统。这也可以通过 来完成udisksctl
,因此步骤是:
udisksctl unmount -b /dev/sda1
udisksctl power-off -b /dev/sda
如果你不使用systemd
那么旧的好udisks
应该工作:
udisks --unmount /dev/sda1
udisks --detach /dev/sda
答案2
umount
对于磁盘来说是完全安全的。一旦完成,您就成功卸载了文件系统,您不必担心这些问题。之间的主要区别喷射根本umount
不关心磁盘 - 而是关心 USB 端口的 5v 电源输出。
之后umount
您仍然可以看到列出的磁盘,lsblk
因为它仍然处于打开状态并已连接。umount
内部硬盘的文件系统,您会因为相同的原因看到相同的行为。但是当你喷射一个 USB 设备,你把它断电,它就不再像通常那样汲取 5v 电压 - 我认为它会逐渐下降到 0.5v,但这种情况发生在很久以前。
lsblk -f /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0
NAME FSTYPE LABEL UUID MOUNTPOINT
sdd
├─sdd1 vfat USBESP 3AD6-C7CC
└─sdd2 ext4 USBROOT 5afbfe93-6955-44ec-8c4f-cf381f8ef174
这是它的 USB 总线路径...
cat /sys/bus/usb/devices/5-3/manufacturer
SanDisk
尽管我几乎从未安装过它,但它已经插入并闪烁了很长一段时间,我猜......
cat /sys/bus/usb/devices/5-3/power/{level,connected_duration}
on
1777877440
我应该为此做点什么:
echo 1 | sudo tee /sys/bus/usb/devices/5-3/remove
现在我再看一遍...
cat /sys/bus/usb/devices/5-3/power/level
cat: /sys/bus/usb/devices/5-3/power/level: No such file or directory
嗯...
lsblk -f /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0
lsblk: /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0: not a block device