मुझे फैबी का दृष्टिकोण पसंद है, लेकिन इस बुरी आदत के बारे में लोगों को सिखाना अच्छा है (वे हर समय नियंत्रित मशीनों पर काम नहीं कर रहे हैं)। यह एक 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
एक udv नियम बनाएँ (बदलें 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 से जुड़ता है । इसमें सभी आवश्यक जानकारी है जो आपको विभाजन माउंट / अनमाउंट, डिस्क प्लग / अनप्लग के बारे में चाहिए ...
संदर्भ / स्रोत : जेंटू विकी: उडिक्स - USB_Thumb_Drive_Example
df -a | grep 'sd[b-z]'
कमांड के साथ यूएसबी के बढ़ते / अनमाउंटिंग समय की निगरानी करता है । एक udv नियम किसी प्रकार के लॉग को हटाने की तारीख भेज सकता है। यदि स्क्रिप्ट द्वारा दिए गए निष्कासन का समय udev नियम से मेल खाता है (कम से कम मिनटों में, सेकंड के साथ विलंब हो सकता है), तो usb माउंट नहीं किया गया था।