Linux
當特定磁碟被熱交換時,如何讓 Linux 執行 bash 腳本?
我有一組用於異地備份的硬碟驅動器。重新插入其中一個磁碟時需要執行幾個步驟,我已將這些步驟整合到一個簡單的 bash 腳本中。我想在其中一個磁碟熱插拔時自動執行腳本。
理想情況下,我會
/dev/disk/by-id/...
為應該觸發腳本的磁碟提供一個磁碟 ID ( ) 列表;當插入其中一個時,腳本將執行,特定磁碟的 ID 將作為參數傳入。作為替代方案,每個磁碟都有一個腳本副本並為各自的磁碟執行每個腳本就足夠了。我正在執行 Ubuntu Server 14.04 LTS,並且一直在瀏覽與 USB 驅動器相關的類似問題,並且正在研究
udev
和hotplug
作為我可能需要使用的兩個系統,但希望有人能夠指出我特定的滿足我需求的簡潔解決方案。
我通常編寫 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