Почему голова; хвост на большом файле иногда занимает много времени, а иногда нет?

Вы можете уменьшить размер логического тома с lvreduce , например, если вы хотите создать еще один раздел 10G, вы можете сначала освободить необходимое пространство с помощью:

lvreduce -L -10G /dev/mapper/centos-home

, а затем создать новый LV с

lvcreate -L 10G -n share centos

это создаст / dev / mapper / centos-share устройство 10G

Как упоминал Томас Дики, операция изменения размера уничтожит вашу файловую систему, поэтому вы можете захотеть сделайте резервную копию всего ценного, что у вас есть. Оба логических тома должны быть впоследствии отформатированы с использованием желаемых файловых систем.

2
18.08.2017, 02:11
1 ответ

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

Однако тут дело в другом. Когда вы используете оболочку (, такую ​​как bash), вы одновременно взаимодействуете с несколькими частями системы. Например:

  • Сама оболочка
  • GNU Readline, который является строковым -интерфейсом редактирования, используемым несколькими оболочками и другими инструментами
  • Реализация libc, которая время от времени может вызывать запутанное поведение практически в любой программе.
  • Сам терминал, который может вести себя странно,и может отвечать на собственные команды . (. любой из Рюкзак и Удалить могут быть недоступны, или они могут быть заменены местами)
  • Окно GUI, внутри которого находится терминал (, если применимо ). Например. он может иметь IME , который позволяет вводить символы Unicode в терминал с помощью специальной последовательности клавиш (, такой как Ctrl + Shift + u , за которым следует номер.)
  • Ядро, включая все его модули и драйверы
  • Само оборудование, которое, естественно, может перегреваться, замыкаться -, терять питание и т.д.

В этом случае, я бы сказал, что самый большой вклад вносит не bashсам по себе, а механизм кэширования на уровне файловой системы -, реализованный в ядре. После того как вы прочитали файл один раз, большая его часть может оказаться в кеше файловой системы, который представляет собой кусок памяти, зарезервированный для этой цели.

При повторном выполнении операций над файлом оболочка не запускает повторно чтение физического оборудования, а извлекает содержимое файла из кэша. Почти любая операция, которую вы (и )выполняете в bash, будет чрезвычайно быстрой по сравнению с чтением с диска. Вот почему вы не замечаете, что bash на самом деле повторно -выполняет команды, потому что отсутствует медленное чтение с диска.

2
27.01.2020, 22:18

Теги

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