Какво означава „всичко е файл“ в Linux?
Една от определящите характеристики на Linux и други UNIX-подобни операционни системи е, че "всичко е файл." Това е опростяване, но разбирането какво означава това ще ви помогне да разберете как работи Linux.
Много неща в Linux се появяват във вашата файлова система, но всъщност не са файлове. Това са специални файлове, които представляват хардуерни устройства, системна информация и други неща - включително генератор на случайни числа.
Тези специални файлове могат да бъдат разположени в псевдо или виртуални файлови системи като / dev, които съдържат специални файлове, които представляват устройства, и / proc, който съдържа специални файлове, които представляват информация за системата и информацията за процеса.
/ Proc
Например, да кажем, че искате да намерите информация за CPU. Директорията / proc съдържа специален файл - / proc / cpuinfo - който съдържа тази информация.
Нямате нужда от специална команда, която да ви информира за вашата CPU информация - можете просто да прочетете съдържанието на този файл, използвайки всяка стандартна команда, която работи с обикновени текстови файлове. Например, можете да използвате командата cat / proc / cpuinfo за да отпечатате съдържанието на този файл в терминала - отпечатване на информацията за процесора в терминала. Можете дори да отворите / proc / cpuinfo в текстов редактор, за да видите съдържанието му.
Не забравяйте, че / proc / cpuinfo всъщност не е текстов файл, съдържащ тази информация - ядрото на Linux и файловата система proc ни представят тази информация като файл. Това ни позволява да използваме познати инструменти за преглед и работа с информацията.
Директорията / proc също съдържа други подобни файлове, например:
- / proc / uptime - Излага времето на работа на ядрото на Linux - с други думи, колко време е включена системата ви без изключване.
- / proc / version - Излага версията на вашето ядро на Linux.
/ сътрудничество
В директорията / 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.
За да изтриете съдържанието на твърдия диск, като напишете 0 към него, нямате нужда от специална помощна програма, посветена на нулирането на диск - можете да използвате стандартни помощни програми и / dev / zero. Например, дд Командата чете от място и записва на друго място. Следната команда ще чете нули от / dev / zero и ще ги записва директно на първия дял на твърдия диск на вашата система, като изтрива напълно съдържанието му.
(Внимание: Тази команда ще изтрие всички данни на първия дял, ако го изпълните. Изпълнете тази команда само ако искате да унищожите данни.)
dd, ако = / dev / zero на = / dev / sda1
Тук използваме dd със специални файлове (/ dev / zero и / dev / sda1), но също така можем да използваме dd, за да четем и пишем към действителните файлове. Същата команда работи както за манипулиране на устройства директно, така и за работа с файлове.
изясняване
На практика е по-точно да се каже, че "всичко е поток от байтове", отколкото "всичко е файл." / Dev / random не е файл, но със сигурност е поток от байтове. И въпреки че тези неща технически не са файлове, те са достъпни във файловата система - файловата система е универсално „пространство за имена“, където всичко е достъпно. Искате да имате достъп до генератор на случайни числа или да четете директно от устройство? Ще намерите и двете във файловата система; не е необходима друга форма на адресиране.
Разбира се, някои неща всъщност не са файлове - процесите, изпълнявани на вашата система, не са част от файловата система. "Всичко е файл" е неточен, но много неща се държат като файлове.