我试图找到一种方法来运行脚本,当安装了像cifs或nfs这样的特定远程fs时,以及它即将被卸载时。我的fstab中有条目,因此我的桌面上会自动创建挂载图标。但是我需要在安装某些特定的远程fs时挂载覆盖fs,并在远程fs卸载之前将其卸载。使用udev监视器,我看到添加/删除通知但属性非常无用:
~$ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[41113.912505] add /devices/virtual/bdi/cifs-2 (bdi)
UDEV [41113.913868] add /devices/virtual/bdi/cifs-2 (bdi)
^
~$ udevadm info -a -p /devices/virtual/bdi/cifs-2
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/virtual/bdi/cifs-2':
KERNEL=="cifs-2"
SUBSYSTEM=="bdi"
DRIVER==""
ATTR{min_ratio}=="0"
ATTR{stable_pages_required}=="0"
ATTR{read_ahead_kb}=="1024"
ATTR{max_ratio}=="100"
那么我可以使用什么呢? 感谢
答案 0 :(得分:0)
您没有提及编程语言,因此我将继续使用pyudev
,这是udev的python包装。
它提供了一种简单的方法来监视udev发出的事件并对它们做出反应。以下是他们的文档中的示例:
每当添加,删除设备时,Linux内核都会发出事件 (例如,USB棒已插入或拔出)或具有其属性 改变了(例如电池的充电水平改变了)。同
pyudev.Monitor
你可以对这些事件作出反应,例如做出反应 添加或删除可安装的文件系统:
>>> monitor = pyudev.Monitor.from_netlink(context)
>>> monitor.filter_by('block')
>>> for device in iter(monitor.poll, None):
... if 'ID_FS_TYPE' in device:
... print('{0} partition {1}'.format(action, device.get('ID_FS_LABEL')))
...
add partition MULTIBOOT
remove partition MULTIBOOT