Домашняя » как » Что означает «Все это файл» в Linux?

    Что означает «Все это файл» в Linux?

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

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

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

    / Proc

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

    Вам не нужна специальная команда, которая сообщает вам информацию о вашем процессоре - вы можете просто прочитать содержимое этого файла, используя любую стандартную команду, которая работает с текстовыми файлами. Например, вы можете использовать команду 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 в качестве жесткого диска, который вы хотите редактировать. Хотите отформатировать первый раздел на вашем первом жестком диске? Запустите команду форматирования и скажите ей форматировать / dev / sda1.

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

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

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

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

    Если вы думаете об этих трех как о файлах, вы не увидите их использование. Вместо этого думайте о них как о инструментах.

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

    команда> / dev / null

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

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

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

    дд если = / dev / ноль = / dev / sda1

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

    осветление

    На практике правильнее будет сказать, что «все является потоком байтов», чем «все является файлом». / Dev / random - это не файл, но это, безусловно, поток байтов. И хотя эти вещи технически не являются файлами, они доступны в файловой системе - файловая система представляет собой универсальное «пространство имен», где все доступно. Хотите получить доступ к генератору случайных чисел или читать прямо с устройства? Вы найдете оба в файловой системе; никакой другой формы адресации не требуется.

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