Что означает в Linux “Everything Is a File”.

Одним из определяющих факторов Linux и других UNIX- подобных операционных систем является то, что они  “Everything Is a File”. Это, конечно, сильное упрощение, но понимая что это означает поможет вам понять, как работает Linux.

Многие вещи в Linux появляются в вашей файловой системе, но они не являются на самом деле файлами. Это специальные файлы, которые представляют собой аппаратные устройства, системы информации и другие вещи, включая генератор случайных чисел. Эти специальные файлы могут быть расположены в псевдо или виртуальной файловой системе,такой, как /dev, которая содержит специальные файлы, которые представляют собой устройства, и каталог /proc, который содержит специальные файлы, которые представляют собой систему и обрабатывают информацию.

/proc

Например, допустим, вы хотите найти информацию о вашем CPU. Каталог /proc содержит специальный файл /proc/cpuinfo, содержащий эту информацию.

Вам не нужны специальные команды, так как всё вам говорит CPU info — вы можете прочесть содержимое этого файла, используя любую стандартную команду, которая работает с файлами plain-text. Например, вы можете использовать команду cat /proc/cpuinfo чтобы распечатать этот файл на терминал — печать информации о вашем процессоре в терминал. Вы можете даже открыть /proc/cpuinfo в текстовом редакторе, чтобы просмотреть его содержимое. Помните, /proc/cpuinfo на самом деле не текстовый файл, содержащий эту информацию, — ядро Linux, а proc предоставляет файловой системе эту информацию к нам в виде файла. Это позволяет нам использовать знакомые инструменты для просмотра и работы с информацией.

Каталог /proc также содержит другие аналогичные файлы, например:

  • /proc/uptime — Выставляет безотказную работу вашего Linux ядра — иными словами, как долго ваша система была без отключения.
  • /proc/version — версия вашего ядра Linux.

/dev

В каталоге /dev, вы найдете файлы, которые представляют собой устройства, а также файлы, которые представляют другие специальные вещи. Например, /dev/cdrom-дисковод CD-ROM. /dev/sda представляет ваш первый жесткий диск, в то время как /dev/sda1 представляет собой первый раздел на вашем первом жестком диске. Вы хотите смонтировать CD-ROM? Запустите команду mount и укажите /dev/cdrom, устройство, которое вы хотите подключить. Хотите разбить ваш первый жесткий диск? Запустите утилиту разметки диска и укажите /dev/sda, как жесткий диск, который вы хотите изменить. Хотите отформатировать первый раздел на вашем первом жёстком диске? Запустите команду форматирование и укажите ей, чтобы format /dev/sda1.

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

/dev/null, /dev/random и /dev/zero

/Dev файловой системы не содержит файлов, которые представляют собой физические устройства. Вот три наиболее важных специальных устройства:

  • /dev/null — Удаляет все данные, записанные на нём — думаю, это как мусорное ведро или черная дыра. Если вы когда-нибудь видели комментарий,чтобы отправить на /dev/null — это отвратительный способ сказать “выбросить их на помойку”.
  • /dev/random — Производит случайные числа с помощью шума окружающей среды. Это генератор случайных чисел.
  • /dev/zero — Производит нули — постоянный поток нулей.

Если вы думаете, что из этих трех файлов, вы сможете увидеть их использование,то нет,вы просто не увидите их использование. Вместо этого, думайте о них, как об инструментах. Например, по умолчанию, Linux команды, производят сообщения об ошибках и другой продукции, которую они печатают на стандартный вывод, как правило, терминал. Если вы хотите, чтобы запустить команду и не заботится о своей продукции, вы можете перенаправить вывод в /dev/null. Перенаправление команды вывод в /dev/null сразу его выбрасывает.Вместо того,как каждая команда реализует свой “тихий режим”, вы можете использовать этот метод, с любой командой.

command > /dev/null

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

Чтобы стереть содержимое жесткого диска,вам не понадобится специальная утилита, посвященная созданию нулей для диска, вы можете использовать стандартные утилиты и /dev/zero. Например, dd команда считывает из местоположения и пишет их в другое место. Следующая команда будет читать нули из /dev/zero и писать их прямо до первого раздела жесткого диска на вашей системе, полностью стерев его содержимое.

(Предупреждение: Эта команда удалит все данные на вашем первом разделе, если вы её запустите.Используйте эту команду,только если вы хотите уничтожить данные.)

dd if=/dev/zero of=/dev/sda1

Здесь мы с помощью dd и специального файла (/dev/zero и /dev/sda1), мы также можем использовать dd для чтения и записи в реальные файлы. Эта же команда работает и для манипулирования непосредственно устройствами  и работы с файлами.

Уточнение

На практике, точнее будет сказать так, что “всё — это поток байтов”, чем “всё есть файл”. /dev/random не файл, но он, безусловно, является потоком байтов. И, хотя эти вещи технически не файлы, они доступны в файловой системе — файловая система, является универсальным “пространство имен”, где всё доступно. Хотите получить доступ к генератору случайных чисел, или чтению прямо из устройства? Вы увидите, как обращение в файловой системе;и никакой другой  необходимой формы. Конечно, некоторые вещи на самом деле не файлы — процессы, запущенные в вашей системе,и они не являются частью файловой системы. “Всё есть файл” является неточным, но многие вещи ведут себя в виде файлов.

 

Оставить комментарий