If-Koubou

Какво означава "всичко е файл" в Linux?

Какво означава "всичко е файл" в Linux? (Как да)

Една от характеристиките на Linux и други UNIX-подобни операционни системи е, че "всичко е файл". Това е опростяване, но разбирането какво означава това ще ви помогне да разберете как работи Linux.

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

Тези специални файлове могат да се намират в псевдо или виртуални файлови системи като / dev, които съдържат специални файлове, представляващи устройства, и / proc, който съдържа специални файлове, представляващи информация за системата и процеса.

/ Proc

Например, да речем, че искате да намерите информация за процесора си. Директорията / proc съдържа специален файл - / proc / cpuinfo - който съдържа тази информация.

Нямате нужда от специална команда, която да ви информира за вашата CPU информация - просто можете да прочетете съдържанието на този файл, като използвате всяка стандартна команда, която работи с обикновен текстов файл. Например можете да използвате командата котка / proc / cpuinfo за да отпечатате съдържанието на този файл в терминала - отпечатвайки информацията за процесора на терминала. Можете дори да отворите / proc / cpuinfo в текстов редактор, за да видите съдържанието му.

Не забравяйте, че / proc / cpuinfo всъщност не е текстов файл, който съдържа тази информация - ядрото на Linux и файловата система proc излагат тази информация на нас като файл. Това ни позволява да използваме познати инструменти, за да виждаме и работим с информацията.

Директорията / proc съдържа и други подобни файлове, например:

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

/ сътрудничество

В директорията / dev ще намерите файлове, които представляват устройства - както и файлове, които представляват други специални неща. Например, / dev / cdrom е вашето CD-ROM устройство. / dev / sda представлява първият ви твърд диск, докато / dev / sda1 представлява първият дял на първия ви твърд диск.

Искате да монтирате компактдиска си? Стартирайте командата за монтиране и задайте / dev / cdrom като устройството, което искате да монтирате. Искате ли да разделите първия си твърд диск? Стартирайте помощна програма за разделяне на диска и посочете / dev / sda като твърд диск, който искате да редактирате. Искате да форматирате първия дял на първия си твърд диск? Пуснете командата за форматиране и я кажете да форматира / dev / sda1.

Както можете да видите, излагането на тези устройства като част от файловата система има своите предимства. Файловата система осигурява последователно "пространство за имена", което всички приложения могат да използват за адресиране и достъп до устройствата.

/ dev / null, / dev / random и / dev / нула

Файловата система / dev не съдържа само файлове, които представляват физически устройства. Ето три от най-забележителните специални устройства, които съдържа:

  • / dev / null - Отхвърля всички данни, написани на него - мислете за него като за боклук или черна дупка. Ако някога сте виждали коментар, който да ви каже да изпратите оплаквания до / dev / null - това е изненадващ начин да кажете "хвърлете ги в кошчето".
  • / dev / random - Произвежда случайност, използвайки шум в околната среда. Това е генератор на произволни числа, който можете да включите.
  • / dev / zero - Произвежда нули - постоянен поток от нули.

Ако мислите за тези три файла, няма да видите как да ги използвате. Вместо това мислете за тях като инструменти.

Например по подразбиране, Linux командите произвеждат съобщения за грешки и други изходи, които отпечатват на стандартния изход, обикновено терминала. Ако искате да изпълните команда и не ви е грижа за изхода, можете да пренасочите този изход към / dev / null. Пренасочването на изхода на команда към / dev / null незабавно го изхвърля. Вместо да въведете всяка команда в своя "тих режим", можете да използвате този метод с команда.

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

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

За да изтриете съдържанието на твърдия диск, като напишете 0 към него, нямате нужда от специална програма, предназначена за нулиране на устройство - можете да използвате стандартни помощни програми и / dev / нула. Например, дд командата чете от дадено местоположение и пише на друго място. Следващата команда щеше да чете нули от / dev / нула и да ги напише директно на първия дял на твърдия диск на вашата система, като напълно изтриваше съдържанието му.

(Внимание: Тази команда ще изтрие всички данни на първия ви дял, ако го изпълнявате. Изпълнявайте тази команда само, ако искате да унищожите данните.)

dd ако = / dev / нула от = / dev / sda1

Тук използваме dd със специални файлове (/ dev / zero и / dev / sda1), но бихме могли да използваме и dd, за да четем от и да пишем на действителни файлове. Същата команда работи както за директно манипулиране на устройствата, така и за работа с файлове.

изясняване

На практика е по-точно да се каже, че "всичко е поток от байтове", отколкото "всичко е файл". / Dev / random не е файл, но със сигурност е поток от байтове. И въпреки че тези неща технически не са файлове, те са достъпни във файловата система - файловата система е универсално "пространство за имена", където всичко е достъпно. Искате ли да получите достъп до генератор на случайни числа или да прочетете директно от устройство? Ще намерите и двете в файловата система; не е необходима друга форма на адресиране.

Разбира се, някои неща всъщност не са файлове - процесите, които се изпълняват на вашата система, не са част от файловата система. "Всичко е файл" е неточно, но много неща се държат като файлове.