Использование 'sync' при очистке устройства с помощью / dev / urandom

Все эти команды будут записывать (txt) (не пытайтесь использовать это в двоичных файлах) содержимое файла:

cat        file
cat       <file
echo   "$(<file)"
cat <<<"$(<file)"

Но это потому, что cat - очень адаптируемая команда, а не потому, что команды равны.

  1. Команда cat file распечатывает содержимое файла, в данном случае cat работает с реальным файлом. Аналогичен less file . Но чем меньше, тем строже, нужен настоящий файл.

  2. Команда cat передает содержимое файла (уже извлеченного как поток) в cat, cat получает поток из стандартного ввода. Но у cat с этим нет проблем, он также печатает поток, и мы видим тот же результат.

  3. В этом случае echo "$ (<файл)" , "$ (<файл)" в точности равно (за исключением некоторых деталей вспомогательной оболочки) ] "$ (файл кошки)" . Это означает, что выполняется команда cat. Затем его вывод преобразуется в текстовую строку при выполнении команды $ (...) , и, наконец, эта текстовая строка печатается с помощью echo. Снова видим содержимое файла.

  4. Команда cat <<< "$ (<файл)" следует этой последовательности:

    • "$ (<файл)" файл читается и выводится как строка

    • <<< отправляет строку на стандартный ввод (stdin)

    • , а cat печатает то, что получает на своем входе (stdin).

Мы видим то же содержимое файла.

Заключение

Мы видим один и тот же вывод во всех случаях. Но содержимое файла меняется в зависимости от того, "что оно есть" (имя файла, поток, строка и т. Д.) В каждой части команды.

2
13.06.2018, 15:09
2 ответа

sync специально не используется, потому что задействован /dev/urandom; он используется для обеспечения того, чтобы все ожидающие записи были отправлены на устройство. Это особенно важно при использовании съемных устройств :с работающим syncи ожидании его завершения, что гарантирует безопасное извлечение устройства.

Если при очистке устройства пропустить syncи отключить устройство, возможно, вы не завершили очистку устройства...

1
27.01.2020, 22:09

Вызов sync()относится к файловым системам -, а не к устройствам.

Если вы записываете в блочное устройство, sync()может привести к очистке буфера, но если вы используете необработанное устройство, как рекомендуется в этом случае, sync()не имеет смысла.

ПРЕДУПРЕЖДЕНИЕ. :В Linux могут возникнуть трудности с определением соответствующего необработанного устройства. Ознакомьтесь с документацией Linux о том, как получить соответствующее необработанное устройство.

0
27.01.2020, 22:09

Теги

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