Удаленное устройство хранения USB все еще смонтировано

[12170]\<[113750] совпадает с началом слова[12171]\>[113753] совпадает с концом слова[12172]\b[113756] совпадает с обеими границами, если в конце или в начале [12173]Важно, чтобы эти специальные символы совпадали с пустой строкой, а не с самой границей слова. граница слова противоположна набору символов, представленных [113757]\w[113758] эквивалентом [113759][_[:alnum:]][113760] (буква а - Z, цифры и [113761]_[113762]) в нотации Posix. [12174]Пример[12175]Наконец, [113763]Graeme находит очень интересный пример[113764]: [12176]В настоящее время этот пример показывает, что иногда может оказаться полезным точное совпадение конца слова вместо границы слова, так как использование пробельных символов при совпадении пробела предотвращается.[113765]. Поэтому в более полезном примере я бы сказал, что если вы хотите сопоставить несловесный символ и конец этого неслова, вы не можете использовать [113766]\>[113767]; но, возможно, [113768]\b[113769] можно использовать в этом конкретном случае, потому что он будет совпадать с началом следующего слова.[12177]Пока ни один пример не доходит до моего сознания. Но на мой взгляд, вероятно, есть несколько случаев использования, когда это имеет смысл, но я думаю, что это только для удобства чтения, потому что когда вы ставите [113960]\b[113961], это туманно, но если вы точно положили начало или конец слова, то это дает лучшее понимание регэкспо тем, кто его читает.[12178]
2
08.05.2014, 01:54
1 ответ

Вы можете написать правило 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

1
27.01.2020, 22:22

Теги

Похожие вопросы