Как удалить Карту памяти без беспокойства если его размонтированный?

Как первая идея, awk:

awk -vRS='#[^#]+#' 'RT{gsub(/#/,"",RT);p[RT]=1}END{for(i in p)print i}' the_file

Но это решение может зависеть от других операций, которые необходимо выполнить.


Объяснения согласно просьбе в комментарии.

awk -vRS='#[^#]+#' '   # use /#[^#]+#/ as record separator
RT {   # record terminator not empty?
  gsub(/#/,"",RT)    # remove the # parameter delimiter markup
  p[RT]=1   # store it as key in array p
}
END {   # end of input?
  for (i in p) print i   # loop through array p and print each key
}' the_file

Основная часть является использованием RT (запишите разделитель), встроенная переменная:

   RT          The record terminator.  Gawk sets RT to the input text that
               matched the character or regular expression specified by
               RS.
3
15.09.2013, 01:10
2 ответа

Хорошо обычно устройства массового хранения, такие как карты флэш-памяти USB смонтированы с помощью команды, mount. Они должны быть явно размонтированы с помощью комплимента для этой команды, umount (это не опечатка). Существуют инструменты, которые могут обнаружить события на аппаратном уровне, такой как, USB-устройство было просто включено. Эти "сервисы" затем сделают монтирование автоматически для Вас. Это - то, что происходит, когда Вы будете использовать рабочий стол GNOME, и Вы будете обычно видеть, что Карты памяти обнаруживаются, как смонтировано в Наутилусе файлового браузера.

Это немного более хитро для знания, когда устройство больше не пишется в. Необходимо было бы записать собственный обработчик для этого использования Udev и сообщений DBUS для знания, когда устройство было сделано, будучи записанным в каждый раз, и затем сохраните его явно в "размонтированном" состоянии.

Я не вижу никакой другой способ сделать это без большой глубокой интеграции в различные подсистемы в Linux, и к моему знанию, которое просто не существует на данный момент.

MAC OSX

Мое предположение было бы то, что на OSX, они работают sync команды и отъезд "смонтированного" устройства, который можно считать опасной вещью сделать, но в удобстве для оператора.

0
27.01.2020, 21:09

Если Вы используете sync смонтируйте опцию на съемном диске, все записи сразу записаны в диск, таким образом, Вы не потеряете данные из еще записанных файлов. Это - плохая идея, но это делает то, что Вы спрашиваете, отчасти.

Отметьте это sync не гарантирует, что Вы не потеряете данные. Размонтирование съемного диска также гарантирует, что никакое приложение не имеет открытый файл. Если Вы не размонтируетесь то перед отключением Вы не заметите, не сохранили ли Вы данные, пока не слишком поздно. Размонтирование, в то время как файл открыт также, увеличивает шанс повреждения, оба на уровне файловой системы (ОС, возможно, поставила некоторые операции в очередь, пока файл не закрывается) и на прикладном уровне (например, если приложение поместит файл блокировки, то это не будет удалено).

Кроме того, sync плохо в течение времени жизни устройства. Без sync опция, переупорядочивание ядра пишет и пишет им в пакетах. С sync опция, ядро пишет каждый сектор в порядке, который требуют приложения. На дешевых медиа флэш-памяти, который не перераспределяет секторы (значение в значительной степени любой более старой карты с интерфейсом USB, я не знаю, верно ли это все еще для недавних), повторных записях к таблице размещения файлов на (V) FAT или к журналу в типичной современной файловой системе может уничтожить палку довольно быстро.

Поэтому я не рекомендую использовать sync смонтируйте опцию.

В файловых системах FAT можно использовать flush смонтируйте опцию. Это является промежуточным между async (значение по умолчанию) и sync: с flush опция, ядро сбрасывает все записи, как только диск становится неактивным, но это не сохраняет порядок записей (так, например, все записи к FAT объединяются).

11
27.01.2020, 21:09

Теги

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