udev断开连接和hibernate/挂起的规则

我有一个外部硬盘,其中包含不同的GPT分区。 其中之一是LVM分区。 这个分区包含在一个LVM卷组(称为“volga”)中,该组又被分割成许多不同的逻辑卷,其中一个是“数据”并且是一个encryption的分区。

每当我插入这个外部硬盘驱动器,我想我的操作系统:

  1. 启用逻辑卷“数据”
  2. 使用cryptsetup在/dev/mapper/data使用存储在/somewhere/keyfile的密钥文件创build未encryption的数据节点
  3. mount /dev/mapper/data/mnt/data 4.将/mnt/data/Music放入/home/qdii/Music (和其他目录)

此外,每当设备拔掉,我想我的操作系统清除一切。

到目前为止,我有2个脚本。 第一个打开并映射设备:

 #!/bin/bash sleep 5 vgchange -aly volga cryptsetup luksOpen -d /somewhere/keyfile /dev/mapper/volga-data data mount /dev/mapper/data /mnt/data for i in Music Videos Ebooks Iso Vbox Games Vrac do mount --bind /mnt/data/$i /home/qdii/$i done 

第二个closures和取消映射该设备:

 #!/bin/bash umount -l /run/media/qdii/zero umount -l /home/qdii/{Videos,Ebooks,Iso,Music,Vbox,Games,Vrac} umount -l /mnt/data sleep 2 cryptsetup luksClose /dev/mapper/data lvchange -aln volga/data 

为了自动执行第一个脚本,我写了一个简单的udev规则:

 SUBSYSTEMS=="usb", ATTRS{serial}=="20120530280019", KERNEL=="sd?2", NAME="%k", SYMLINK+="thomson", GROUP="usb", RUN="/bin/bash /somewhere/open.sh" 

它奇怪,但我不知道如何编写第二个udev规则,在断开连接时调用第二个脚本(或者当计算机进入hibernate/挂起状态时)。