一些細節

一些細節

我知道eject該命令可用於彈出幾乎所有連接的硬體組件,但它可以用於彈出 USB 驅動器嗎?

是否可以使用 USB 隨身碟和外部 HDD 彈出eject命令?

答案1

是的。例如:

sudo eject /dev/sda

這裡表明您需要機械彈出硬體的其他答案是不正確的。

卸載與彈出不同。

  1. 如果卸載卷,您可以立即將其重新安裝,因為底層設備仍然可用。在某些情況下,這可能會帶來安全風險。透過彈出設備,只有 USB 子系統的重置(例如重新啟動)才會重新載入設備。
  2. 透過彈出設備,您可以有效地停用對該設備的任何進一步存取。只有重置 USB 子系統(例如重新啟動)才會重新載入裝置。否則,您必須物理斷開 USB 裝置並重新連接才能再次存取它。
  3. 在彈出之前,此命令將卸載裝置上已安裝的所有磁碟區。
  4. 如果磁碟區正在使用中,則此指令將與卸載一樣失敗,只不過某些磁碟區可能會被卸載而某些磁碟區可能仍處於裝載狀態。

答案2

Linuxeject可以工作,但不會真正「完成工作」關於 USB旋轉驅動器。

首先,你eject /dev/sdb(或umount一切)。

然後,正確卸載後拔掉 USB 外接硬碟的最佳方法是:

    udisksctl power-off -b /dev/sdb

或者

    udisks --detach /dev/sdb

這通常會導致驅動器正常減速。

注意:與(前者已經安裝在我的 Debian 上,後者還沒有並且已經安裝)udisksctl相比,可能是一個更“主流”的工具udisks批評的用於不必要的向上/向下旋轉)。

一些細節

烏迪斯克斯克特爾

文件狀態(關於關閉電源選項):

安排安全移除驅動器並關閉電源。在作業系統方面,這包括確保沒有進程正在使用驅動器,然後請求將運行中的緩衝區和快取提交到穩定的儲存。關閉驅動器電源的確切步驟取決於驅動器本身和所使用的互連。對於透過 USB 連接的驅動器,效果是 USB 裝置將被取消配置,然後停用它所連接的上游集線器連接埠。

請注意,由於某些實體裝置包含多個磁碟機(例如四合一快閃記憶體卡讀卡機 USB 裝置),因此關閉一個磁碟機可能會影響其他磁碟機。因此,與執行此操作相關的保證並不多。通常,效果是驅動器消失,就像拔掉插頭一樣。

udisk(已棄用?)

準確地說,目前的實施(截至 2014 年):

  • 發送 SCSI 同步快取命令,
  • 發送 SCSI 停止指令,
  • 解除USB儲存核心驅動程式的綁定,
  • 暫停USB設備(電源),
  • 從邏輯上停用/從 USB 連接埠刪除它。

此過程接近建議的手動過程這裡。最初的答案是在阿斯庫本圖

答案3

卸載磁碟 /dev/sdb 的手動步驟(需要 sudo):

echo 'offline' > /sys/block/sdb/device/state
echo '1' > /sys/block/sdb/device/delete

這將完全關閉設備電源並將其與系統分開。在斷開連接並重新連接之前,不會再次檢測到它。

答案4

如果你仔細閱讀彈出(1)man page 可以看到有4種彈出方法:

   -r   This  option specifies that the drive should be ejected using a CDROM
        eject command.

   -s   This option specifies that the drive should  be  ejected  using  SCSI
        commands.

   -f   This option specifies that the drive should be ejected using a remov‐
        able floppy disk eject command.

   -q   This option specifies that the drive should be ejected using  a  tape
        drive offline command.

你打電話時噴射在 HDD/SCSI 上,它發出ioctl(fd, SG_IO, (void *)&io_hdr);命令(從eject.c來源複製)。

這相當於您在 MS Windows 或 MaxOSX 中安全刪除裝置。

對於某些設備來說,這有特殊的含義。例如Kindle 3之後噴射命令已移至充電模式並允許在螢幕鎖定之前在裝置上瀏覽。

另一個實用程式做同樣的事情,就像這樣

scsi-spin --force --down /dev/sda

相關內容