Linux

當特定磁碟被熱交換時,如何讓 Linux 執行 bash 腳本?

  • March 11, 2015

我有一組用於異地備份的硬碟驅動器。重新插入其中一個磁碟時需要執行幾個步驟,我已將這些步驟整合到一個簡單的 bash 腳本中。我想在其中一個磁碟熱插拔時自動執行腳本。

理想情況下,我會/dev/disk/by-id/...為應該觸發腳本的磁碟提供一個磁碟 ID ( ) 列表;當插入其中一個時,腳本將執行,特定磁碟的 ID 將作為參數傳入。作為替代方案,每個磁碟都有一個腳本副本並為各自的磁碟執行每個腳本就足夠了。

我正在執行 Ubuntu Server 14.04 LTS,並且一直在瀏覽與 USB 驅動器相關的類似問題,並且正在研究udevhotplug作為我可能需要使用的兩個系統,但希望有人能夠指出我特定的滿足我需求的簡潔解決方案。

我通常編寫 udev 規則的方法是找到與我需要的內容相似的內容,/lib/udev並通過 google 搜尋或快速查看手冊頁對其進行補充。

對於您的情況,大多數 mojo 都可以在/lib/udev/rules.d/60-persistent-storage.rules. 我想出了這個規則:

ACTION=="add", SUBSYSTEM=="block", ENV{ID_SERIAL}=="XXXXXXXX", PROGRAM="/opt/bin/myscript $env{ID_SERIAL}"

您需要為每個驅動器設置一個規則,並且您的腳本接收驅動器序列號作為參數。

我在這裡只使用驅動器序列號,這應該足夠了,但是您可以重建整個 ID,如/dev/disk/by-id使用此字元串所示:

$env{ID_BUS}-$env{ID_SERIAL}

要檢查驅動器的序列號,您可以使用:

udevadm info -n /dev/disk/by-id/XXXXXXXX | grep -i SERIAL

引用自:https://serverfault.com/questions/655465