我有一个电源管理的 USB 驱动器,不使用时会关闭电源,访问时会自动唤醒。它被用作根脚本的备份驱动器,根脚本会在必要时安装它。有时 mount 命令会失败,因为我怀疑它并不总是等待驱动器启动(尽管这只是猜测)。
我想在脚本中放入一个命令,该命令将探测驱动器并使其旋转起来,以便在发出挂载时准备就绪。我试过了,lsusb
但不起作用,文件系统命令也不起作用,因为它还没有挂载。fdisk -l
似乎确实有效,但我可以使用更好的方法吗?
更新
根据@vidarlo的建议,我在下一次挂载失败后检查了 dmesg:
[Sun Aug 5 01:30:04 2018] usb 1-1: reset high-speed USB device number 2 using xhci_hcd [Sun Aug 5 01:30:04 2018] usb 1-1: device firmware changed [Sun Aug 5 01:30:04 2018] usb 1-1: USB disconnect, device number 2 [Sun Aug 5 01:30:04 2018] sd 2:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK [Sun Aug 5 01:30:04 2018] sd 2:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 41 00 00 02 00 [Sun Aug 5 01:30:04 2018] print_req_error: I/O error, dev sdb, sector 65 [Sun Aug 5 01:30:04 2018] EXT4-fs (sdb1): unable to read superblock [Sun Aug 5 01:30:04 2018] usb 1-1: new high-speed USB device number 4 using xhci_hcd [Sun Aug 5 01:30:05 2018] usb 1-1: New USB device found, idVendor=152d, idProduct=2339 [Sun Aug 5 01:30:05 2018] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=5 [Sun Aug 5 01:30:05 2018] usb 1-1: Product: USB to ATA/ATAPI Bridge [Sun Aug 5 01:30:05 2018] usb 1-1: Manufacturer: JMicron [Sun Aug 5 01:30:05 2018] usb 1-1: SerialNumber: 152D203380B6 [Sun Aug 5 01:30:05 2018] usb-storage 1-1:1.0: USB Mass Storage device detected [Sun Aug 5 01:30:05 2018] scsi host2: usb-storage 1-1:1.0 [Sun Aug 5 01:30:07 2018] scsi 2:0:0:0: Direct-Access SAMSUNG HD321KJ PQ: 0 ANSI: 2 CCS [Sun Aug 5 01:30:07 2018] sd 2:0:0:0: Attached scsi generic sg1 type 0 [Sun Aug 5 01:30:07 2018] sd 2:0:0:0: [sdb] 625142448 512-byte logical blocks: (320 GB/298 GiB) [Sun Aug 5 01:30:07 2018] sd 2:0:0:0: [sdb] Write Protect is off [Sun Aug 5 01:30:07 2018] sd 2:0:0:0: [sdb] Mode Sense: 00 38 00 00 [Sun Aug 5 01:30:07 2018] sd 2:0:0:0: [sdb] Asking for cache data failed [Sun Aug 5 01:30:07 2018] sd 2:0:0:0: [sdb] Assuming drive cache: write through [Sun Aug 5 01:30:08 2018] sdb: sdb1 [Sun Aug 5 01:30:08 2018] sd 2:0:0:0: [sdb] Attached SCSI disk
无论错误如何,驱动器最终似乎都可用。我相信,如果我此时重新运行备份脚本,它就会起作用。
答案1
任何读取都会触发它:
sudo dd if=/dev/sdx1 bs=1k count=1 of=/dev/zero
将尝试读取它并将其唤醒。
请注意,我有点怀疑这是挂载不起作用的原因。您收到任何错误消息了吗?dmesg | tail -n 25
挂载尝试失败后会显示什么?
答案2
睡眠电源管理 USB 驱动器
您的电源管理 USB 驱动器在不使用时会关闭电源,并在访问时自动唤醒,但有时速度太慢。在这种情况下,它既没有卸载也没有弹出,我认为命令
sudo partprobe
应该叫醒它。
睡觉
本案中没有涉及,但涉及一些相关案件
sleep 5
会帮助操作系统有 5 秒钟的时间来准备执行下一个命令(备份)。
卸载
如果您已经使用 卸载了 USB 驱动器上的所有分区sudo umount ...
,则它仍然处于通电状态并连接到/dev/sdx
(x
驱动器号为,例如b
或c
),您可以使用 再次在其上安装分区sudo mount ...
。
喷射
如果你弹出了 USB 闪存盘(这是文件浏览器的典型操作),当你点击弹出图标时,其上的所有分区都会被卸载,并且已关闭并且不再连接到/dev/sdx
。我的意思是您无法通过指向 来使用任何命令来唤醒它/dev/sdx
。
拔下并重新插入
当您拔下并再次插入弹出的 USB 驱动器时,它将打开电源并连接到/dev/sdx
。
警告:切勿拔下已安装分区的 USB 驱动器
切勿拔下已安装分区的 USB 驱动器,因为分区中的文件系统很有可能被损坏。
所以你必须卸载或者喷射(或关闭计算机)然后再拔掉电源插头。