Пользователи неоднократно жалуются на потерянные данные по картам флэш-памяти USB после того, как они отключили их без размонтирования. Мы запускаем Ubuntu 14.04 LTS на наших машинах. Автомонтирование включено.
Поскольку я устал от запоминания их, чтобы сделать безопасное удаление перед отключением, я хочу заставить Ubuntu отобразить предупреждение каждый раз, когда смонтированная Карта памяти отключается.
Я думал о добавлении udev
постановите что выполнения notify-send
на удалении в случае, если диск все еще смонтирован. Как я могу определить, была ли Карта памяти смонтирована после удаления?
Мне нравится подход Fabby, но хорошо учить людей этой дурной привычке (Они не работают все время над управляемыми машинами). Это подобно функции OSX, как описано здесь .
существует небольшая разница, которую можно использовать его, чтобы знать, был ли это сейф, удалите:
udev переменная ID_PART_TABLE_TYPE=dos
установлена для sdx
, дисковый узел ( НЕ узел раздела sdxY
) в небезопасном удаляет.
, Где это не установлено в сейфе, удаляют
Замеченный путем слежения за развитием udev событий:
udevadm monitor -u --environment
Безопасный удаляют
UDEV [8292.380554] change /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/host16/target16:0:0/16:0:0:0/block/sdb (block)
ACTION=change
DEVLINKS=/dev/disk/by-id/usb-ADATA_USB_Flash_Drive_8d90ec535e6663-0:0 /dev/disk/by-path/pci-0000:00:14.0-usb-0:2:1.0-scsi-0:0:0:0
DEVNAME=/dev/sdb
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/host16/target16:0:0/16:0:0:0/block/sdb
DEVTYPE=disk
DISK_MEDIA_CHANGE=1
ID_BUS=usb
ID_INSTANCE=0:0
ID_MODEL=USB_Flash_Drive
ID_MODEL_ENC=USB\x20Flash\x20Drive\x20
ID_MODEL_ID=c96a
ID_PATH=pci-0000:00:14.0-usb-0:2:1.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0-scsi-0_0_0_0
ID_REVISION=0.00
ID_SERIAL=ADATA_USB_Flash_Drive_8d90ec535e6663-0:0
ID_SERIAL_SHORT=8d90ec535e6663
ID_TYPE=disk
ID_USB_DRIVER=usb-storage
ID_USB_INTERFACES=:080650:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=ADATA
ID_VENDOR_ENC=ADATA\x20\x20\x20
ID_VENDOR_ID=125f
MAJOR=8
MINOR=16
SEQNUM=2989
SUBSYSTEM=block
TAGS=:systemd:
USEC_INITIALIZED=554873
Небезопасный, удаляют
UDEV [8391.320280] remove /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host17/target17:0:0/17:0:0:0/block/sdb (block)
ACTION=remove
DEVLINKS=/dev/disk/by-id/usb-ADATA_USB_Flash_Drive_8d90ec535e6663-0:0 /dev/disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0
DEVNAME=/dev/sdb
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host17/target17:0:0/17:0:0:0/block/sdb
DEVTYPE=disk
ID_BUS=usb
ID_INSTANCE=0:0
ID_MODEL=USB_Flash_Drive
ID_MODEL_ENC=USB\x20Flash\x20Drive\x20
ID_MODEL_ID=c96a
ID_PART_TABLE_TYPE=dos
ID_PATH=pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0
ID_REVISION=0.00
ID_SERIAL=ADATA_USB_Flash_Drive_8d90ec535e6663-0:0
ID_SERIAL_SHORT=8d90ec535e6663
ID_TYPE=disk
ID_USB_DRIVER=usb-storage
ID_USB_INTERFACES=:080650:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=ADATA
ID_VENDOR_ENC=ADATA\x20\x20\x20
ID_VENDOR_ID=125f
MAJOR=8
MINOR=16
SEQNUM=3022
SUBSYSTEM=block
TAGS=:systemd:
USEC_INITIALIZED=436355
, Создают правило udev (изменение useranme
)
$ sudo nano /etc/udev/rules.d/90-unsafe-remove-notify.rules
ACTION=="remove", KERNEL=="sd?", ENV{ID_PART_TABLE_TYPE}!="", RUN+="/usr/bin/sudo -u username DISPLAY=:0 notify-send 'Unsafe Remove' '<b><i>Your long message</b></i>' -i /usr/share/icons/gnome/48x48/emotes/face-worried.png -t 10000"
правила Перезагрузки
sudo udevadm control --reload-rules
Иначе, можно использовать сценарий (Python), которые соединяются с udisks
DBUS. Этому все была нужна информация, которую Вы должны о разделе монтировать/размонтировать, диски включаются/отключают...
Ссылка/Источник: хинду Wiki: Udisks - USB_Thumb_Drive_Example
К сожалению, это - вещь, Micro$oft на самом деле стал совершенно правильным: удаление USB... И Вы продолжите иметь эту проблему до Вас:
Отключают автомонтирование
, Если пользователи должны смонтироваться вручную, будет легче обучить их демонтировать также.
Создают правило udev, которое выключает все кэширование на дисках USB...