ls
и stat
, знают, как получить к нему доступ: ls -U
, stat
использует B
( документировано на справочных страницах).ls -u
, stat
использует a
и m
(опять же, как задокументировано). Обратите внимание, что для уменьшения записи на диск при каждом доступе к файлу отслеживание метки времени последнего доступа иногда отключается или отключается условно.Есть еще одна вещь, которую вы не упомянули, а именно последнее изменение индекса. Это отслеживает, когда в последний раз изменялись метаданные файла, а не содержимое файла.
Если вы запустили программу/скрипт с самого USB-накопителя, вы должны быть в состоянии выяснить, какая карта/имя LUKS и устройство, на котором он находится (, или просто указать скрипту устройство или сопоставленное имя, если вы его знаете )и следите за тем, когда устройство «исчезает» при его удалении. Затем размонтируйте его.
Я почти уверен , что отсоединение USB приведет к исчезновению устройства (/dev/sdXn
), но если это не так, вам придется наблюдать dmesg
или смотреть в системном журнале, или найти его где-нибудь в /sys
, возможно.
Вот доказательство -концептуального сценария bash -, который выглядит так, как будто он должен работать, но у меня нет разделов LUKS на USB-накопителе для тестирования,поэтому я не уверен, нужны ли umount
такие параметры, как --lazy
или --force
.
map=$( df --output=source $PWD |tail -n1 )
device=$( sudo cryptsetup status "$map" | grep -o "device:.*"|cut -d' ' -f 3 )
while [ -b "$device" ]
do
sleep 30
done
echo "Device $device is missing, unmounting"
sudo umount -v "$map"
Если он запускается из смонтированного контейнера LUKS, $PWD
должен найти имя LUKS, на которое он сопоставлен, а затем устройство, и если устройство перестанет быть блочным специальным файлом, размонтировать сопоставленное устройство.
PS Если устройство было смонтировано rw(доступно для записи)файловая система может быть повреждена внезапным его отключением. FAT кажется особенно уязвимой, в то время как журналируемая файловая система должна быть более надежной. Если он смонтирован ro (только для чтения -), по крайней мере, вы можете избежать этой проблемы, mount принимает -o ro
и cryptsetup принимает --readonly
(, оба, вероятно, не нужны)
Похоже, вы пропускаете некоторые этапы процесса. Вы должны:
cryptsetup luksOpen /dev/sdb flash
mount /dev/mapper/flash /mnt/flash
umount /mnt/flash
cryptsetup close flash
Инверсия mount
— umount
. Попытка размонтировать
не вставленный диск может зависнуть, в зависимости от того, что пытается сделать система. Шаг cryptsetup close
дополнительно удаляет сопоставление диска и стирает ключ шифрования из памяти ядра.
Вы не можете гарантировать, что все (мета)данные будут правильно записаны на устройство, если вы физически удалите его без вызова umount
. Ваш ключ шифрования все еще доступен в памяти, пока вы не вызовете cryptsetup close
. Имея это в виду, эти шаги не следует пропускать.