2-bo‘lim
Fayl tizimi ierarxiyasi
Ildizdan boshlab har katalogning vazifasi, ramziy havolalar va serverda nima qayerda yotadi.
Ushbu bo‘lim mundarijasi
Linuxda hamma narsa fayl: matn ham, disk ham, tarmoq
qurilmasi ham. Va bu fayllarning hammasi bitta daraxtda -
ildizi / bo'lgan daraxtda.
Windows dan farq #
| Windows | Linux |
|---|---|
C:\, D:\ - har disk alohida ildiz | Bitta ildiz /, disklar unga ulanadi |
\ ajratgich | / ajratgich |
| Kengaytma turni belgilaydi | Kengaytma - shunchaki nom qismi |
| Katta-kichik harf farqsiz | Xat.txt va xat.txt - turli fayl |
Dastur Program Files da | Dastur /usr/bin da, sozlama /etc da |
Windowsda ishlagan sayt serverga ko'chirilganda rasmlar
yo'qoladi. Sabab: kodda Logo.PNG, faylda esa logo.png.
Windowsda bu ishlaydi, Linuxda esa yo'q.
Yechim - fayl nomlarini doim kichik harfda va bo'shliqsiz
yozing: bosh-sahifa-logo.png.
Ildizda nima bor #
ls /
bin
boot
dev
etc
home
init
lib
lib32
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
Yuqoridagi chiqishda init va lost+found bor - ular tekshiruv
tizimiga xos. Ubuntu Server da init bo'lmaydi, lost+found
esa ext4 fayl tizimi ishlatilsa - bo'ladi.
Bu me'yoriy holat: FHS (Filesystem Hierarchy Standard) asosiy kataloglarni belgilaydi, qolganini distributiv qo'shadi.
Serverdagi eng muhim beshta katalog #
| Katalog | Ichida nima | Qachon kirasiz |
|---|---|---|
/etc | Barcha sozlama fayllari | Xizmatni sozlaganda |
/var/log | Jurnallar | Nimadir buzilganda |
/var/www | Sayt fayllari | Ilova joylashtirganda |
/home | Foydalanuvchi fayllari | Kundalik ish |
/usr/bin | Buyruqlar | Kamdan-kam |
/etc - serverning miyasi/etc da nechta fayl borligini sanab ko'ring - odatda 300 dan
ortiq. Ularning har biri qandaydir xizmatning xatti-harakatini
belgilaydi.
Shu sababli /etc ni zaxiraga oling (19-bo'lim). Diskdagi
ma'lumot yo'qolsa - uni tiklash mumkin. /etc yo'qolsa - siz
serverni noldan sozlashingiz kerak bo'ladi.
test "$(ls /etc | wc -l)" -gt 200 && echo "/etc da 200 dan ortiq yozuv bor"
/etc da 200 dan ortiq yozuv bor
Aniq son tizimga qarab o'zgaradi - va u doimiy emas:
useradd kabi buyruqlar /etc/passwd- shaklidagi zaxira
nusxalarni yaratadi va o'chiradi, shuning uchun son bir-ikkitaga
tebranib turadi.
Ramziy havolalar #
ls -F har nom yoniga uning turini bildiruvchi belgi qo'yadi:
ls -F / | head -8
bin@
boot/
dev/
etc/
home/
init*
lib@
lib32@
| Belgi | Ma'no |
|---|---|
/ | Katalog |
@ | Ramziy havola (symlink) |
* | Bajariladigan fayl |
| (yo'q) | Oddiy fayl |
bin@ - demak /bin haqiqiy katalog emas, u havola:
file /bin /sbin /etc/hostname /dev/null
/bin: symbolic link to usr/bin
/sbin: symbolic link to usr/sbin
/etc/hostname: ASCII text
/dev/null: character special (1/3)
Havola qayerga olib borishini readlink -f aytadi:
readlink -f /bin /sbin
/usr/bin
/usr/sbin
/bin va /usr/bin birlashtirildiIlgari /bin da tizim yuklanishi uchun zarur buyruqlar,
/usr/bin da qolganlari yotardi. Bu bo'linish /usr alohida
diskda bo'lgan davrda mantiqiy edi.
Bugun initramfs bu vazifani bajaradi, shuning uchun Debian,
Ubuntu, Fedora va boshqalar /bin ni /usr/bin ga havola
qilib qo'ydi. Bu usr-merge deb ataladi.
Amalda buning ma'nosi: /bin/ls va /usr/bin/ls - bitta
fayl. Skriptlarda #!/bin/bash ham, #!/usr/bin/bash ham
ishlaydi.
Fayl haqida to'liq ma'lumot #
ls -l qisqa ko'rinish beradi, stat esa hammasini:
stat -c "%n | %s bayt | %F | %U:%G | %a" /etc/hostname /etc /dev/null
/etc/hostname | 16 bayt | regular file | root:root | 644
/etc | 12288 bayt | directory | root:root | 755
/dev/null | 0 bayt | character special file | root:root | 666
| Format | Ma'no |
|---|---|
%n | Fayl nomi |
%s | Hajmi (bayt) |
%F | Turi |
%U:%G | Egasi va guruhi |
%a | Ruxsatlar (oktal) |
%y | O'zgartirilgan vaqti |
Yuqorida /etc hajmi 12288 bayt. Bu ichidagi fayllar
hajmi emas - bu katalog yozuvlar jadvalining o'zi.
Katalog ichidagi haqiqiy hajmni du aytadi:
| Buyruq | Nima o'lchaydi |
|---|---|
ls -ld /etc | Katalog yozuvi (12 KB) |
du -sh /etc | Ichidagi hamma narsa (bir necha MB) |
df -h / | Butun fayl tizimi |
14-bo'limda disk to'lganda qaysi birini ishlatishni ko'ramiz.
Yo'llar: mutlaq va nisbiy #
mkdir -p sayt/public/rasmlar sayt/config
echo "<h1>Salom</h1>" > sayt/public/index.html
echo "port=8080" > sayt/config/server.conf
touch -d "2026-09-01 09:00:00" sayt/public/index.html sayt/config/server.conf
Mutlaq yo'l / dan boshlanadi va qayerdan chaqirilishidan
qat'i nazar bir xil joyni ko'rsatadi:
head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
Nisbiy yo'l joriy katalogdan hisoblanadi:
cd sayt/public
cat index.html
cat ../config/server.conf
<h1>Salom</h1>
port=8080
| Yozuv | Ma'no |
|---|---|
/etc/nginx | Mutlaq - ildizdan |
nginx/nginx.conf | Nisbiy - joriy katalogdan |
./skript.sh | Aniq joriy katalogdan |
../config | Ota katalogdan |
~/loyiha | Uy katalogidan |
- (cd - da) | Oldingi katalog |
Bu skript uy katalogingizda ishlaydi:
tar -czf zaxira.tar.gz sayt/
Lekin cron uni boshqa katalogdan ishga tushiradi (13-bo'lim)
va u jimgina xato beradi yoki eng yomoni - noto'g'ri
katalogni arxivlaydi.
To'g'ri yozuv:
tar -czf /var/backups/zaxira.tar.gz /var/www/sayt
Qoida: interaktiv ishda nisbiy yo'l qulay, skriptda faqat mutlaq yo'l.
Katalogda nima borligini ko'rish #
find sayt -type f | sort
sayt/config/server.conf
sayt/public/index.html
find - eng kuchli qidiruv vositasi. Uning asosiy bayroqlari:
| Bayroq | Nima qiladi |
|---|---|
-type f | Faqat oddiy fayllar |
-type d | Faqat kataloglar |
-type l | Faqat havolalar |
-name "*.log" | Nom bo'yicha |
-size +100M | Hajm bo'yicha |
-mtime -7 | Oxirgi 7 kunda o'zgargan |
-maxdepth 1 | Faqat shu darajada |
find sayt -maxdepth 1 | sort
sayt
sayt/config
sayt/public
Katalog tuzilmasini ko'rish uchun find ni saralab chiqarish
ham yetarli:
find sayt | sort | sed 's|[^/]*/| |g'
sayt
config
server.conf
public
index.html
rasmlar
tree yo'q bo'lsaYuqoridagi sed hiylasi tree o'rnatilmagan serverda ish
beradi. Agar tree bor bo'lsa - u chiroyliroq:
| Buyruq | Natija |
|---|---|
tree sayt | To'liq daraxt |
tree -L 2 sayt | Faqat 2 daraja |
tree -d sayt | Faqat kataloglar |
Lekin yangi serverda tree odatda yo'q, find esa
doim bor. Shuning uchun find ni bilish muhimroq.
Vaqtinchalik fayllar qayerga #
| Katalog | Qachon tozalanadi | Nima uchun |
|---|---|---|
/tmp | Qayta yuklashda | Qisqa muddatli fayllar |
/var/tmp | Tozalanmaydi | Qayta yuklashdan omon qolishi kerak |
/run | Qayta yuklashda | PID fayllar, soketlar |
/dev/shm | Qayta yuklashda | Xotiradagi fayl tizimi |
stat -f -c "%n -> %T" / /tmp /run /dev/shm
/ -> ext2/ext3
/tmp -> ext2/ext3
/run -> tmpfs
/dev/shm -> tmpfs
tmpfs - diskda emas, xotirada/run turi tmpfs. Bu shuni anglatadiki, u diskda umuman
mavjud emas - fayllar operativ xotirada yotadi.
(stat -f ext4 ni ext2/ext3 deb ataydi - u fayl tizimining
oilasini ko'rsatadi, aniq versiyasini emas. Aniq nomni
df -T beradi.)
Natijasi:
- Juda tez (disk kutish yo'q);
- Qayta yuklashda butunlay yo'qoladi;
- Operativ xotirani iste'mol qiladi.
Shuning uchun /run ga katta fayl yozmang - siz serverning
xotirasini yeyapsiz.
Ba'zi tizimlarda /tmp ham tmpfs bo'ladi. Buni tekshirmasdan
/tmp ga 10 GB lik zaxira nusxa yozish - klassik xato.
ls /chiqishidagi har katalogni vazifasi bo'yicha guruhlang./etcdagi fayllar sonini sanang.ls -F /bilan uchta havolani toping.readlink -fbilan ular qayerga borishini aniqlang.statbilan/etc/passwdning egasi va ruxsatini oling.ls -ldvadu -shchiqishlarini/etcuchun solishtiring.sayt/public/rasmlarichiga fayl qo'ying vafindbilan toping.- Nisbiy va mutlaq yo'l bilan bir faylni ikki xil oching.
find / -maxdepth 1 -type lbilan ildizdagi havolalarni sanang.df -hTbilan qaysi kataloglartmpfsekanini aniqlang.
Xulosa #
- Linuxda bitta ildiz
/; disklar unga ulanadi. - Fayl nomlarida katta-kichik harf farq qiladi.
/etc- sozlama,/var/log- jurnal,/var/www- sayt./etcni albatta zaxiraga oling.ls -Fda/katalog,@havola,*bajariladigan fayl./binbugun/usr/binga havola (usr-merge).statfayl haqidalsdan ancha ko'proq aytadi.- Katalog "hajmi" - yozuvlar jadvali, ichidagi fayllar emas.
- Skriptda doim mutlaq yo'l; nisbiy yo'l - interaktiv ish uchun.
/runva ba'zan/tmp-tmpfs, ya'ni xotirada.
Keyingi bo'limda fayl mazmuni bilan ishlaymiz: ko'rish, qidirish va jurnaldan kerakli satrni ajratib olish.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.