Scripting

自動掛載後解除安裝腳本

  • March 21, 2022

我的意圖是在未使用 20 分鐘後關閉外部 USB 驅動器。在正常情況下,我會使用hdparm它,但不幸的是,這在我的外部 USB 驅動器上不起作用。它給了我這樣的錯誤:

hdparm -S240 /dev/sdc

/dev/sdc:
setting standby to 240 (20 minutes)
SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

然後我的頭sdparm

sdparm --flexible -C stop /dev/sdc
   /dev/sdc: SAMSUNG   HD153WI 

它使磁碟旋轉不到一秒鐘,然後立即再次旋轉起來。即使文件系統沒有掛載。

然後我發現

eject /dev/sdc

確實使磁碟減速,但也將其解除安裝。

下一個想法是在有人訪問文件系統中的掛載路徑時使用自動掛載來掛載驅動器。安裝工作,但驅動器解除安裝後,它不會減速。我想要做的是在自動掛載解除安裝驅動器後執行上面的彈出命令。

你有什麼想法嗎?或者更好的是,您有更簡單的解決方案嗎?

我有理由確定,自動掛載沒有解除安裝後選項。但我在 sdparm (1.07) 聯機幫助頁中找到了一些內容:

-r, –readonly

> > 覆蓋其他邏輯以只讀模式打開設備。如果命令通過 SCSI 命令集發送到 ATA 磁碟,此選項可能很有用。例如,在 Linux 中,“-C stop”可能需要此選項來停止正在立即重新啟動的 ATA 磁碟。 > > >

我目前沒有 USB 硬碟,作業系統我無法對其進行測試,但這似乎與您遇到的問題相匹配。不過,我不確定如何測量驅動器的空閒時間。

如果磁碟沒有保留此選項,則您可能遇到了同一手冊頁中描述的此問題:

在 Linux 2.6 系列中,尤其是使用 ATA 磁碟時,使用 sdparm 停止(旋轉)磁碟可能還不夠,其他機制會在一段時間後再次啟動磁碟。使用者還可以使用 ’echo offline > /sys/block/sda/device/state’ 將磁碟標記為“離線”,其中 sda 是磁碟的塊名稱。重新啟動磁碟“離線”可以替換為“執行”。


您還可以將自動掛載與彈出結合使用。即使用 automount 進行安裝,並使用eject 進行解除安裝。它似乎工作得很好,但彈出必須以 root 權限執行。

引用自:https://unix.stackexchange.com/questions/101680