나는 Fabby의 접근 방식이 마음에 들지만 사람들에게이 나쁜 습관에 대해 가르치는 것이 좋습니다 (제어 기계에서 항상 작동하지는 않습니다). 여기에 설명 된대로 OSX 기능과 유사합니다 .
안전한 제거인지 알기 위해 사용할 수있는 약간의 차이가 있습니다.
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 규칙 만들기 (change 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
다른 방법으로는 udisks
DBUS에 연결하는 스크립트 (python)를 사용할 수 있습니다 . 파티션 마운트 / 마운트 해제, 디스크 플러그 / 플러그 분리에 필요한 모든 정보가 있습니다 ...
참조 / 출처 : 젠투 위키 : Udisk-USB_Thumb_Drive_Example
df -a | grep 'sd[b-z]'
명령으로 usb의 마운트 / 마운트 해제 시간을 모니터링하는 시작 스크립트를 사용하여 이것에 접근합니다 . udev 규칙은 제거 날짜를 일종의 로그로 보낼 수 있습니다. 스크립트가 제공 한 제거 시간이 udev 규칙의 시간과 일치하면 (최소 몇 분, 지연 시간이있을 수 있음) USB가 마운트되지 않았습니다.