как изменить горячие клавиши для переключения между VT и X?

Я думаю причина вашего замешательства в том, что вы не знаете, что такое каталог . Для этого давайте сделаем шаг назад и посмотрим, как работают файловые системы Unix.

Файловая система Unix имеет несколько отдельных понятий для адресации данных на диске:

  • блоки данных - это группа блоков на диске, которые имеют содержимое файл.
  • inodes - это специальные блоки в файловой системе с числовым адресом, уникальным в этой файловой системе, который содержит метаданные о файле, такие как:
    • разрешения
    • доступ / модификация раз
    • размер
    • указатели на блоки данных (может быть список блоков, экстентов и т. д.)
  • имена файлов - это иерархические местоположения в корне файловой системы, которые отображаются на индексные дескрипторы.

Другими словами, «файл» на самом деле состоит из трех разных вещей:

  1. ПУТЬ в файловой системе
  2. индексный дескриптор с метаданными
  3. блоки данных, на которые указывает индексный дескриптор

Большая часть время, пользователи воображают, что файл является синонимом «сущности, связанной с именем файла» - это только тогда, когда вы имеете дело с низкоуровневыми сущностями или API файла / сокета, которые вы думаете об индексных дескрипторах или блоках данных. Каталоги - одна из таких низкоуровневых сущностей.

Вы можете подумать, что каталог - это файл, содержащий множество других файлов. Это правильно только наполовину. Каталог - это файл, который сопоставляет имена файлов с номерами inode. Он не «содержит» файлы, а указывает на имена файлов. Думайте об этом как о текстовом файле, который содержит такие записи:

  • . - inode 1234
  • .. - inode 200
  • Документы - inode 2008
  • README.txt - inode 2009

Вышеупомянутые записи называются записями каталога . Это в основном сопоставления имен файлов с номерами inode. Каталог - это специальный файл, содержащий записи каталога.

Это, конечно, упрощение, но оно объясняет основную идею и другие странности каталогов.

  • Почему каталогам не известен свой размер?
    • Поскольку они содержат только указатели на другие материалы, вам нужно перебирать их содержимое, чтобы найти размер
  • Почему каталоги никогда не пусты?
    • Потому что они содержат как минимум расширение. и .. записи. Таким образом, правильный каталог будет по крайней мере таким же маленьким, как наименьший размер файла, который может содержать эти записи. В большинстве файловых систем самый маленький размер - 4096 байт.
  • Почему вам нужно разрешение на запись в родительский каталог при переименовании файла?
    • Поскольку вы не просто изменяете файл, вы меняете запись в каталоге указывая на файл.
  • Почему ls показывает странное количество «ссылок» на каталог?
    • каталог может ссылаться (связываться) сам с собой, с его родителем, со своими дочерними элементами.
  • Что делает жесткая ссылка и чем она отличается от символической?
    • жесткая ссылка добавляет запись каталога , указывающую на тот же номер inode . Поскольку он указывает на номер inode, он может указывать только на файлы в той же файловой системе (inodes являются локальными для файловой системы)
    • , символическая ссылка добавляет новый inode, который указывает на отдельное имя файла. Поскольку он ссылается на имя файла, он может указывать на произвольные файлы в дереве.

Но подождите! Происходят странные вещи!

ls -ld somedirectory всегда показывает размер файла 4096, тогда как ls -l somefile показывает фактический размер файла. Почему?

Проблема 1: когда мы говорим «размер», мы можем иметь в виду две вещи:

  • размер файла, который представляет собой число, хранящееся в индексном дескрипторе; и
  • выделенный размер, который представляет собой количество блоков, связанных с индексным дескриптором, умноженное на размер каждого блока.

Обычно это не одно и то же число. Попробуйте запустить stat в обычном файле, и вы увидите разницу.

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

Что делает файловая система со всем этим неиспользуемым пространством? Ничего такого. Пока не почувствуете, что это нужно.Если ваш инструмент оптимизатора файловой системы - возможно, онлайн-оптимизатор, работающий в фоновом режиме, возможно, часть вашего fsck, возможно, встроенный в вашу файловую систему - кажется, что он может переназначить блоки данных ваших файлов - перемещение использованных блоков, освобождение неиспользуемых блоки и т. д.

Итак, теперь мы подошли к разнице между обычными файлами и каталогами: поскольку каталоги составляют «основу» вашей файловой системы, вы ожидаете, что к ним может потребоваться частый доступ или изменение, и поэтому их следует оптимизировать. И поэтому вы вообще не хотите, чтобы они были фрагментированы. Когда каталоги создаются, они всегда максимизируют все свои блоки данных по размеру, даже если у них есть только определенное количество записей каталога. Это нормально для каталогов, потому что, в отличие от файлов, каталоги обычно ограничены по размеру и скорости роста.

Сообщенный размер каталогов 4096 - это номер «файла», хранящийся в индексном дескрипторе каталога, а не количество записей в каталоге. Это не фиксированное число - это максимальное количество байтов, которое уместится в выделенное количество блоков для каталога. Обычно это 512 байт / блок, умноженное на 8 блоков, выделенных для файла с любым содержимым - кстати, для каталогов размер файла и выделенный размер одинаковы. Поскольку он выделен как единая группа, оптимизатор файловой системы не будет перемещать свои блоки.

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

Итак, ls и stat покажут поле размера файла inode каталога, которое установлено равным размеру назначенных ему блоков данных.

1
18.03.2018, 09:37
1 ответ

Предполагается, что Linux (не FreeBSD ... ).

Это должно отключить специальные функции Alt+Left или Alt+Right, оставив только клавиши Alt+Fn для смены консоли. Его следует запускать на консоли, и для загрузки новой раскладки требуется root :

.
dumpkeys > backup-keymap
dumpkeys | sed 's/Decr_Console/Left/g;s/Incr_Console/Right/g' | loadkeys

Для возврата используйте loadkeys < backup-keymapили перезапустите какой-либо инструмент настройки системной клавиатуры.

Я не знаю, как правильно интегрировать это при загрузке в раскладку клавиатуры. Это может зависеть от дистрибутива (и при использовании systemd...)

Файл/etc/console-setup/remap.incв Debian может дать больше подсказок о том, как правильно переопределить клавиатуру вместо этих низкоуровневых команд в Debian.

0
28.01.2020, 00:38

Теги

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