Пара указателей:
var = $ (date +% H)
, это гораздо удобнее ["$ var" -eq "23"]
&&
вместо , если
. [$ var -eq 23] && echo "var is 23"
dd
не обходит дисковые кеши ядра при записи на устройство, поэтому некоторая часть данных может быть еще не записана на флешку USB
после завершения dd
. Если в этот момент вы отключите USB-накопитель USB
, содержимое на USB-накопителе
будет несовместимым. Таким образом, ваша система может даже не загрузиться с этого USB-накопителя
.
Синхронизация
сбрасывает все данные, все еще находящиеся в кэше, на устройство.
Вместо вызова sync
вы можете использовать параметр преобразования fdatasync
dd
:
fdatasync
физически записывать данные выходного файла до завершения
В В вашем случае команда будет такой:
tar -xzOf archlinux-2016-09-03-dual.iso | \
dd of=/dev/disk2 bs=4M status=progress conv=fdatasync
conv = fdatasync
заставляет dd
эффективно вызывать fdatasync ()
системный вызов в конце передачи непосредственно перед dd
выходит (я проверил это с помощью источников dd
).
Это подтверждает, что dd
не будет обходить и очищать кеши, если это явно не указано.
Из справочной страницы sync (1): «sync - синхронизировать кэшированные записи в постоянное хранилище». Обычно sync
гарантирует, что все ваши данные будут записаны на карту памяти из кеша.