Вы можете написать правило udev вроде
ACTION=="remove", KERNEL=="sd[b-z][0-9]", SUBSYSTEM=="block", RUN+="umount-removed.sh"
, которое вызовет событие отключения, а затем размонтирует файловую систему из этого скрипта.
MNT_POINT=`df | grep "$DEVNAME" | awk '{print $6}'`
#If still mounted
if [ ! -z "$MNT_POINT" ];then
logger -i -t usbrm -p daemon.notice "The device $DEVNAME is still mounted"
#Umount fs
umount $DEVNAME
if [ $? -eq 0 ];then
logger -i -t usbrm -p daemon.notice "$DEVNAME successfully unmounted from $MNT_POINT"
else
logger -i -t usbrm -p daemon.err "Impossible to umount $DEVNAME from $MNT_POINT. Aborting..."
fi
fi
Вы можете увидеть журнал в /var/daemon.log.
Редактировать:Забыл уточнить, что udev использует определенное пространство имен, поэтому вам нужно настроить его для совместного использования точки монтирования с пользовательским пространством.
Для этого найдите файл systemd-udevd.service
в вашей системе и скопируйте его в /etc/systemd/system/systemd-udevd.service
и замените содержимое на MountFlags=shared