Tarkibga o'tish

Linux fayl tizimi ierarxiyasi: har bir katalog nima uchun kerak

Server muammosini tez aniqlash ko'pincha bitta savoldan boshlanadi: bu qanday ma’lumot? Hostning konfiguratsiyasi odatda /etc da, xizmatning o'zgarib turadigan holati /var/lib da, uning loglari /var/log da, faqat joriy yuklanish (boot) davomida saqlanishi kerak bo'lgan narsa esa /run da turadi. Bu tuzilmani shunchaki yodlash shart emas: u paketlar, administratorlar va ishlab turgan xizmatlar bir-birining fayllarini ustidan yozib yubormasligi uchun mavjud.

Oldingi maqola — Disk va fayl tizimi asoslari — turli fayl tizimlari bitta / daraxtiga qanday ulanishini ko'rsatdi. Bu maqola esa shu daraxtdagi asosiy kataloglar aslida nimani anglatishini ko'rib chiqadi. Misollar Ubuntu Server LTS’ning joriy versiyasiga mo'ljallangan. Filesystem Hierarchy Standard (FHS) umumiy yo'nalishni belgilaydi, lekin muayyan mashinadagi aniq tuzilmani distributiv siyosati va paket hujjatlari hal qiladi. Quyida / ni root hisobidan va /root katalogidan ajratishni; asosiy yuqori darajadagi kataloglarni ulardagi ma’lumotning hayot sikli orqali tushunishni; /etc, /usr, /var, /run, /tmp, /opt va /srv orasidan to'g'risini tanlashni; /dev, /proc va /sys oddiy disk kataloglari emasligini tanib olishni; usr-merge tufayli /bin kabi yo'llar nega ko'pincha symbolic link bo'lishini tushunishni o'rganamiz. Oxirida haqiqiy dasturning bajariladigan fayli, konfiguratsiyasi, doimiy holati va loglarini taxmin bilan emas, dalillar bilan topamiz.

FHS nimani standartlashtiradi

Filesystem Hierarchy Standard (FHS) Unix’ga o'xshash tizimlarda fayl va kataloglar qayerda turishi kerakligi bo'yicha talablar va tavsiyalarni belgilaydi. Maqsad — ilovalar, administratorlar, hujjatlar va boshqaruv vositalari bitta yo'lning bir xil ma’nosiga tayanishi. FHS kernelning fayl tizimi formatini belgilamaydi: ext4 yoki XFS ma’lumotni diskda qanday saqlashi haqida u hech narsa demaydi.

FHS 3.0 foydali asos, lekin zamonaviy Linux tizimlari uning ustiga systemd, konteynerlar, o'zgarmas (immutable) image’lar, Snap va Flatpak paketlash, usr-merge va distributivning o'z siyosatidan kelgan qo'shimcha qoidalarni qo'shadi. Shuning uchun:

  1. katalogning umumiy ma’nosini FHS dan o'rganing;
  2. haqiqiy hostdagi amaldagi holatni buyruq bilan tasdiqlang;
  3. o'sha distributiv uchun muayyan paket yoki xizmatning hujjatlarini tekshiring.

Yuqori darajadagi daraxtni xavfsiz ko'rish usuli:

find / -maxdepth 1 -mindepth 1 -printf '%f\n' 2> "$HOME/root-find-errors.txt" | sort
printf 'find errors: '
wc -l < "$HOME/root-find-errors.txt"

Natija distributivga, mount qilingan fayl tizimlariga va o'rnatilgan dasturlarga qarab farq qiladi. / ostida biror nomni ko'rishingiz uni FHS talab qiladi degani emas.

Ildiz: /

/ — jarayon ko'radigan katalog ierarxiyasining boshlang'ich nuqtasi. Absolyut yo'l / dan, nisbiy yo'l esa joriy katalogdan boshlab aniqlanadi:

pwd
realpath /etc/../etc/hosts

Namunaviy natija:

/etc/hosts

"Root" so'zining uch xil ma’nosini aralashtirmang:

  • /: katalog daraxtining ildizi.
  • root: administrator hisobi, odatda UID 0.
  • /root: shu hisobning sukut bo'yicha uy katalogi.

Konteyner, chroot yoki alohida mount namespace ichidagi jarayon butunlay boshqa / ni ko'rishi mumkin. Absolyut yo'l butun jismoniy hostga nisbatan emas, faqat o'sha jarayon ko'rib turgan daraxtga nisbatan absolyut bo'ladi.

Kataloglarni ma’lumotning hayot sikli bo'yicha o'qish

Notanish yo'lga duch kelganingizda katalog nomlarini yodlashdan ko'ra quyidagi savollar foydaliroq:

  • Buni operatsion tizim yoki paket bergan, yoki administrator lokal o'rnatganmi?
  • Ma’lumot faqat shu hostga tegishlimi yoki bir nechta host o'rtasida ulashilishi mumkinmi?
  • Mazmun doimiymi, joriy yuklanish bilan bog'liqmi yoki butunlay vaqtinchalikmi?
  • Bu konfiguratsiyami, doimiy holatmi, keshmi yoki logmi?
  • Uni kim boshqaradi — paket menejerimi, xizmatmi yoki foydalanuvchimi?

Masalan, /usr/bin/ssh paket bergan bajariladigan fayl, /etc/ssh/ssh_config host konfiguratsiyasi, /var/lib/<service> ehtimol doimiy holat, /run/<service> esa joriy yuklanishdagi runtime holati.

Tizim dasturlari: /usr, /bin, /sbin va /lib

/usr

/usr foydalanuvchining uy katalogi emas. Bu distributiv taqdim etgan dasturlar va asosan o'zgarmaydigan resurslarning katta ierarxiyasi:

  • /usr/bin: foydalanuvchilar ishlatadigan buyruqlarning ko'pchiligi.
  • /usr/sbin: ko'proq tizim administratorligiga mo'ljallangan bajariladigan fayllar.
  • /usr/lib va uning arxitekturaga xos variantlari: kutubxonalar va ilovalarning ichki fayllari.
  • /usr/share: arxitekturaga bog'liq bo'lmagan ma’lumotlar, hujjatlar, locale fayllari va man sahifalari.
  • /usr/include: dasturlash uchun sarlavha (header) fayllari.
  • /usr/local: administrator paket menejeridan tashqari, lokal o'rnatgan dastur va ma’lumotlar uchun alohida ierarxiya.

Buyruq aslida qayerdan kelayotganini tekshirish:

command -v ls
type -a ls
readlink -f "$(command -v ls)"

Namunaviy yakuniy yo'l:

/usr/bin/ls

Debian/Ubuntu’da fayl qaysi paketga tegishli ekanini aniqlash:

dpkg-query -S /usr/bin/ls

RHEL oilasidagi tizimlarda shunga teng buyruq:

rpm -qf /usr/bin/ls

Faqat o'rnatilgan distributivga mos buyruqni ishlating. Paket boshqaradigan faylni qo'lda tahrirlasangiz, o'zgarish keyingi yangilanishda yo'qolishi yoki paket menejerining yaxlitlik tekshiruvlarini buzishi mumkin.

usr-merge va eski yo'llar

Hozirgi ko'plab distributivlarda /bin, /sbin va /lib* alohida daraxtlar emas, balki /usr ichiga ko'rsatuvchi symbolic link’lar. Symbolic link — maqsad sifatida boshqa yo'lni saqlaydigan maxsus fayl turi; uning ichki ishlash mexanizmi Hard va symbolic link’lar maqolasida ko'rib chiqiladi. Bu yerda maqsad faqat haqiqiy hostdagi amaldagi holatni o'qish:

ls -ld /bin /sbin /lib /lib64 2>/dev/null
readlink -f /bin /sbin /lib 2>/dev/null

ls -ld link’ning o'zini va unda saqlangan maqsadni ko'rsatadi; readlink -f esa barcha link’larni ochib, yakuniy kanonik yo'lni chiqaradi. Bu tizimda mavjud bo'lmagan yo'l diagnostik xabarlar chiqarishi mumkin, shuning uchun bu misolda standart xato chetga yo'naltirilgan. Kutilmaganda bo'sh chiqqan natijani qo'shimcha tekshirmasdan "link yo'q" deb tushunmang.

Ubuntu’dagi namunaviy ko'rinish:

/bin -> usr/bin
/sbin -> usr/sbin
/lib -> usr/lib

Eski yoki boshqa distributivda ular haqiqiy kataloglar bo'lishi mumkin. "/bin har doim symlink" yoki "/bin har doim alohida fayl tizimi" deb hisoblaydigan skript yozmang. #!/bin/sh kabi tarixiy yo'llar aynan shu moslik uchun qoldirilgan symlink tufayli ishlashda davom etadi.

/usr/local

/usr/local sayt administratori boshqaradigan dasturlarni distributiv paketlari taqdim etganlardan ajratadi:

/usr/local/bin
/usr/local/sbin
/usr/local/lib
/usr/local/share
/usr/local/etc
/usr/local/var

Manba koddan yig'ilgan kichik vosita yoki ichki build ko'pincha /usr/local/bin ga tushadi. Paket boshqaradigan faylni /usr/local ga ko'chirib, muammoni yopib qo'ymang: egalik va yangilanish modeli aniq bo'lib qolsin.

Host konfiguratsiyasi: /etc

/etc hostga xos tizim konfiguratsiyasini saqlaydi. Misollar:

/etc/ssh/
/etc/systemd/
/etc/nginx/
/etc/hosts
/etc/fstab

Bajariladigan dasturlar yoki katta hajmdagi ilova ma’lumotlari /etc ga tegishli emas. Maxfiy ma’lumotlar faqat /etc da turgani uchun avtomatik ravishda xavfsiz bo'lib qolmaydi: egalik, ruxsatlar, zaxira nusxa, audit va maxfiy ma’lumotning hayot siklini baribir ongli ravishda boshqarish kerak.

Bu yerdagi faylni o'zgartirishdan oldin:

config=/etc/ssh/ssh_config
ls -l -- "$config"
file -- "$config"
stat -- "$config"

Production’dagi o'zgarish odatda shunday tartibda bo'ladi: zaxira nusxa → tahrirlash → ilovaning o'z tekshiruvchisi → diff → reload → health check → rollback rejasi. /etc/fstab, SSH konfiguratsiyasi yoki xizmat konfiguratsiyasini shunchaki namoyish uchun o'ylamasdan tahrirlamang.

Paket bilan kelgan standart sozlamalar va administratorning o'z o'zgarishi qayerda turishi distributivga bog'liq. Debian/Ubuntu’da ba’zi paket namunalari /usr/share/doc/<package>/ ostida bo'ladi; RHEL oilasi boshqa yo'ldan foydalanishi yoki paketning o'z hujjatlariga yo'naltirishi mumkin.

O'zgaruvchan va doimiy ma’lumotlar: /var

/var tizim ishlayotgan paytda o'zgaradigan ma’lumotlarni saqlaydi. Uning ichki kataloglari bir xil ma’noga ega emas:

  • /var/lib: xizmat yoki paketning qayta yuklanishdan keyin ham saqlanadigan doimiy holati.
  • /var/log: log fayllari (agar xizmat o'z chiqishini journald yoki masofaviy log tizimiga yubormayotgan bo'lsa).
  • /var/cache: qayta hosil qilish mumkin bo'lgan kesh ma’lumotlari.
  • /var/spool: qayta ishlanishini kutayotgan navbatdagi ma’lumotlar.
  • /var/tmp: /tmp dagidan uzoqroq saqlanishi kerak bo'lgan vaqtinchalik fayllar.
  • /var/opt: /opt ostiga o'rnatilgan qo'shimcha dasturlarning o'zgaruvchan ma’lumotlari.

/var/lib/postgresql yoki /var/lib/mysql kabi ma’lumotlar bazasi holati shunchaki o'ylamasdan o'chirib yuboriladigan "katta fayl" emas. Uning formatini, tranzaksiyalarni va zaxira nusxa olish hamda tiklash jarayonini xizmatning o'zi boshqaradi.

Mount chegarasidan chiqmasdan joy sarfini tekshirish:

df -hT /var
du -xhd1 /var > "$HOME/var-usage.txt" 2> "$HOME/var-usage-errors.txt"
sort -h "$HOME/var-usage.txt" | tail -n 15

/var/log mavjudligi har bir xizmat o'sha yerga yozadi degani emas. systemd xizmatining stdout va stderr oqimlarini journald ushlab olishi mumkin. Logning haqiqiy manbasini aniqlash keyinroq loglar modulida journalctl yordamida ko'rib chiqiladi.

Runtime va vaqtinchalik ma’lumotlar: /run, /tmp, /var/tmp

/run

/run faqat joriy yuklanish uchun kerak bo'lgan runtime ma’lumotlarini saqlaydi va odatda tmpfs bo'ladi:

findmnt -no TARGET,SOURCE,FSTYPE,OPTIONS --target /run

PID fayllari, Unix socket’lar, qulflar (lock) va har bir xizmatning runtime kataloglari shu yerda turadi. /run dagi mazmun qayta yuklanishdan keyin saqlanib qolishi kutilmaydi. Bu yerga doimiy ma’lumotlar bazasi yoki foydalanuvchi hujjatlarini qo'ymang.

Ko'plab zamonaviy tizimlarda /var/run va /var/lock moslik uchun /run ga ko'rsatuvchi link’lar:

ls -ld /var/run /var/lock 2>/dev/null
readlink -f /var/run /var/lock 2>/dev/null

/tmp

/tmp turli jarayonlar uchun umumiy vaqtinchalik joy. Uning ruxsatlari odatda t ko'rinishidagi sticky bit bilan tugaydi:

ls -ld /tmp
findmnt -T /tmp -o TARGET,SOURCE,FSTYPE,OPTIONS

Namunaviy ruxsatlar qatori:

drwxrwxrwt ... /tmp

Sticky bit hamma yoza oladigan umumiy katalogda foydalanuvchilar bir-birining fayllarini o'chirishini cheklaydi. Lekin u maxfiylikni ta’minlamaydi: xavfsiz dastur umumiy katalogda oldindan taxmin qilinadigan nom bilan fayl yaratmaydi, balki mktemp kabi vosita bilan shaxsiy, noyob nomli vaqtinchalik fayl yaratadi.

/tmp har bir qayta yuklanishda albatta tozalanadi deb hisoblamang. Tozalash siyosati distributivga va systemd-tmpfiles kabi mexanizmlarga bog'liq. Saqlanib qolishi shart bo'lgan ma’lumot uchun na /tmp, na /var/tmp haqiqiy zaxira nusxaning o'rnini bosadi.

Foydalanuvchi kataloglari: /home va /root

Oddiy hisobning uy katalogi ko'pincha /home/<user> bo'ladi, lekin katalog xizmati (directory service), automount sozlamasi yoki sayt siyosati uni boshqa joyga qo'yishi mumkin. Taxmin qilish o'rniga hisoblar bazasini tekshiring:

getent passwd "$USER"
printf 'HOME=%s\n' "$HOME"

/root — root hisobining sukut bo'yicha uy katalogi. Uni /home/root deb o'ylamang. Uy katalogidagi .bashrc va .ssh kabi nuqta bilan boshlanadigan fayllar (dotfile’lar) foydalanuvchi darajasidagi konfiguratsiya; ular tizim bo'yicha umumiy konfiguratsiyadan boshqa doiraga tegishli.

Production xizmati ma’lumotlarini administratorning uy katalogiga yashirish egalik, zaxira nusxa va xizmatlarni izolyatsiya qilishni chalkashtiradi. Xizmat ma’lumotlari distributiv siyosati belgilagan joyda turishi kerak — odatda /var/lib/<service>, /srv/... yoki ilova uchun ajratilgan alohida katalog.

Yuklanish fayllari: /boot

/boot kernel image’i, initramfs va bootloader bilan bog'liq o'zgarmas fayllarni saqlaydi va ko'pincha alohida fayl tizimi bo'ladi:

findmnt --target /boot
findmnt --target /boot/efi 2>/dev/null
ls -lh /boot | sed -n '1,20p'

UEFI tizimlarda EFI System Partition odatda /boot/efi ga mount qilinadi. Aniq tuzilma distributivga va o'rnatish usuliga bog'liq.

Danger

/boot dagi kernel yoki initramfs faylini "eskiga o'xshaydi" degan sabab bilan qo'lda o'chirmang. Bu bootloader konfiguratsiyasini va paket menejerining o'z hisobini buzib, tizimni yuklanmaydigan holatga keltirishi mumkin. Joy muammosini avval df, o'rnatilgan kernel paketlari ro'yxati va distributivning rasmiy olib tashlash tartibi orqali o'rganing. Bu yerdagi biror narsaga tegishdan oldin snapshot va tiklash konsoli tayyor bo'lsin.

Qurilma va kernel interfeyslari: /dev, /proc, /sys

/dev

/dev qurilma tugunlari (device node) va ba’zi runtime obyektlarini saqlaydi. Masalan:

  • /dev/nvme0n1: ehtimol blok qurilma tuguni.
  • /dev/tty: boshqaruvchi terminal.
  • /dev/null: unga yozilgan hamma narsani tashlab yuboradigan maxsus qurilma.
  • /dev/urandom: kernelning tasodifiy sonlar interfeysi.

Bu "qurilmaning barcha ma’lumotlari /dev da saqlanadi" degani emas: qurilma tuguni kernel drayveriga murojaat qilish nuqtasi xolos. Bu tugunlar va symlink’larning ko'pchiligini udev dinamik ravishda boshqaradi.

findmnt -no TARGET,SOURCE,FSTYPE --target /dev
ls -l /dev/null /dev/tty

Qurilma tuguniga noto'g'ri yozish qurilmaga yoki undagi ma’lumotlarga zarar yetkazishi mumkin. /dev ichida sinov fayllari yaratmang.

/proc

/proc — jarayonlar va kernel haqidagi ma’lumotlarni ko'rsatadigan psevdo fayl tizimi:

findmnt -no TARGET,SOURCE,FSTYPE,OPTIONS --target /proc
head -n 5 /proc/meminfo
printf 'current shell PID=%s\n' "$$"
sed -n '1,12p' "/proc/$$/status"

Ko'p yozuvlar faqat o'qish uchundek ko'rinadi, lekin /proc/sys ostidagi ba’zi fayllarga yozish kernel parametrini darhol o'zgartiradi. Internetdan ko'chirilgan echo ... > /proc/sys/... buyrug'ini production’da ishga tushirmang: bu oldindan rejalashtirilgan zaxira va rollback bilan sysctl siyosatiga tegishli ish.

/sys

/sys ga mount qilingan sysfs kernel obyektlari, qurilmalar, drayverlar va ularning atributlarini ierarxik ko'rinishda taqdim etadi:

findmnt -no TARGET,SOURCE,FSTYPE,OPTIONS --target /sys
find /sys/class/net -maxdepth 1 -mindepth 1 -printf '%f\n'

Ba’zi sysfs atributlariga yozish mumkin va ular apparat yoki kernel xatti-harakatini to'g'ridan-to'g'ri o'zgartiradi. Ularni oddiy konfiguratsiya katalogidek tahrirlamang.

Qo'shimcha dasturlar va server ma’lumotlari: /opt va /srv

/opt o'zi mustaqil bo'lgan qo'shimcha dastur paketlari uchun ishlatiladi. FHS modelida dastur /opt/<provider>/<package> ostida turadi, uning host konfiguratsiyasi /etc/opt ga, o'zgaruvchan ma’lumotlari esa /var/opt ga tushishi mumkin. Haqiqiy tuzilmani esa ishlab chiqaruvchining o'z hujjatlari belgilaydi.

/srv server taqdim etadigan, saytga xos ma’lumotlar uchun mo'ljallangan, masalan /srv/www/example. Lekin amalda Ubuntu paketidagi Nginx’ning standart hujjatlar ildizi (document root) tarixan /var/www/html bo'lib kelgan. FHS niyatini distributivning haqiqiy standart sozlamasi bilan adashtirmang — ishlab turgan konfiguratsiyani tekshiring.

Backend xizmat uchun mumkin bo'lgan ichki tuzilma:

/opt/acme/api/          release code or vendor bundle
/etc/acme-api/          host configuration
/var/lib/acme-api/      persistent application state
/var/log/acme-api/      log files written to disk, if used
/run/acme-api/          PID, sockets, and current-boot runtime data
/srv/acme-api/public/   site data the service serves, where policy allows it

Bu hamma uchun majburiy bo'lgan universal shablon emas. Aniq tuzilmani distributiv paketlari, systemd unit’i, konteyner volume’lari va tashkilot siyosati hal qiladi. Egalik va ruxsatlar keyingi modulda alohida ko'rib chiqiladi.

Mount qilish uchun kataloglar: /mnt va /media

  • /mnt: administrator qo'lda bajaradigan, vaqtinchalik mount’lar uchun an’anaviy joy.
  • /media: ko'pincha USB disklar yoki optik disklar kabi olinadigan qurilmalarni avtomatik mount qilish uchun ishlatiladi.

Bu yerdagi bo'sh katalog xato emas. Mount holatini katalog mazmuniga qarab taxmin qilmang:

findmnt --mountpoint /mnt
findmnt --target /media 2>/dev/null

Biror narsani haqiqatan mount qilish bu maqola doirasidan tashqarida. Noto'g'ri qurilmani mount qilish yoki band mount nuqtasiga mount qilish ma’lumotni yashirib qo'yishi va ishlab turgan xizmatni buzishi mumkin.

Amaliy vaziyat: notanish faylning egasi va vazifasini aniqlash

Muammo: /usr/bin/ssh mavjud, lekin uni qaysi qatlam boshqarishini, konfiguratsiyasi qayerdaligini va runtime ma’lumotlari qayerga yozilishini aniqlash kerak.

  1. Bajariladigan faylning yo'lini aniqlang:

    ssh_path=$(command -v ssh)
    printf 'ssh path=%s\n' "$ssh_path"
    readlink -f "$ssh_path"
    file "$ssh_path"
    
  2. Debian/Ubuntu’da fayl qaysi paketga tegishli ekanini tekshiring:

    dpkg-query -S "$(readlink -f "$ssh_path")"
    

    RHEL oilasida:

    rpm -qf "$(readlink -f "$ssh_path")"
    
  3. Mijoz konfiguratsiyasi mavjudligini tasdiqlang:

    ls -l /etc/ssh/ssh_config
    
  4. Har bir yo'l qaysi fayl tizimiga tegishli ekanini solishtiring:

    findmnt -no TARGET,SOURCE,FSTYPE --target "$ssh_path"
    findmnt -no TARGET,SOURCE,FSTYPE --target /etc/ssh/ssh_config
    
  5. Xulosa:

    • /usr/bin/ssh — paket boshqaradigan bajariladigan fayl.
    • /etc/ssh/ssh_config — tizim bo'yicha umumiy mijoz konfiguratsiyasi.
    • ~/.ssh/config — foydalanuvchiga xos konfiguratsiya, butunlay boshqa doira.
    • SSH serverining holati va loglari mijoz dasturi yonida saqlanishi shart emas.

Bu usul "nomi bog'liq narsalarning hammasi bir joyda turadi" degan taxminni haqiqiy dalillar bilan almashtiradi. Agar paket o'rnatilmagan bo'lsa yoki yo'l boshqacha bo'lsa, natija buni ko'rsatadi.

Keng tarqalgan xatolar

  • /, root hisobi va /root ni bir xil tushuncha deb hisoblash.
  • /usr ni foydalanuvchi hujjatlari uchun katalog deb o'ylash.
  • /bin, /sbin va /lib har bir tizimda doim alohida haqiqiy kataloglar deb hisoblash.
  • /usr ostidagi paket boshqaradigan faylni qo'lda tahrirlash.
  • Konfiguratsiya, doimiy holat, kesh va runtime ma’lumotlarini bitta katalogda saqlash.
  • /tmp yoki /run dagi ma’lumot qayta yuklanishdan keyin ham saqlanib qoladi deb ishonish.
  • Har bir xizmatning /var/log ostida o'z log fayli bo'ladi deb kutish.
  • /proc va /sys ni oddiy, faqat o'qiladigan disk kataloglari deb hisoblash.
  • Siyosatni tekshirmasdan /opt, /srv yoki /var/www ni har qanday ilova uchun universal joy deb e’lon qilish.
  • Katalog bo'sh yoki band ekanini tekshirmasdan, uni mount nuqtasi deb hisoblash.
  • Boshqa distributiv hujjatidagi yo'lni shu distributivning o'z siyosatini tekshirmasdan ko'chirib olish.

Mashqlar

  1. stat va findmnt yordamida /, /root va joriy $HOME ning turi, egasi va mount’ini solishtiring.
  2. /bin, /sbin va /lib uchun ls -ld va readlink -f ni bajaring va bu hostda usr-merge bor-yo'qligini aniqlang.
  3. /run, /tmp va /var/tmp uchun fayl tizimi turi, ruxsatlar va kutilgan hayot sikli haqida qisqa izoh yozing (jadval shart emas).
  4. /dev, /proc va /sys ni findmnt bilan tekshiring va nega ularning hech birini SSD dagi oddiy katalog deb hisoblab bo'lmasligini tushuntiring.
  5. O'rnatilgan bitta buyruqni command -v, readlink -f va distributivingizdagi paket so'rov vositasi yordamida kuzatib chiqing.
  6. Taxminiy inventory-api xizmati uchun uning kodi, konfiguratsiyasi, doimiy holati, runtime socket’i va loglari uchun yo'llarni tanlang va har bir tanlovni hayot sikli va egalik nuqtai nazaridan asoslang.

Mashqni bajardim deyish uchun: notanish yo'l berilganda "bu yerda nima turishi kerak, uni kim boshqaradi, u qancha yashaydi va qaysi fayl tizimiga tegishli?" degan savolga dalillar bilan javob bera olishingiz kerak.

Manbalar

  • Linux Foundation: Filesystem Hierarchy Standard 3.0: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
  • Linux man-pages: hier(7): https://man7.org/linux/man-pages/man7/hier.7.html
  • systemd: file-hierarchy(7): https://www.freedesktop.org/software/systemd/man/latest/file-hierarchy.html
  • Linux man-pages: proc(5): https://man7.org/linux/man-pages/man5/proc.5.html
  • Linux kernel hujjatlari: sysfs: https://www.kernel.org/doc/html/latest/filesystems/sysfs.html
  • Linux man-pages: tmpfs(5): https://man7.org/linux/man-pages/man5/tmpfs.5.html
  • Debian wiki: UsrMerge: https://wiki.debian.org/UsrMerge
  • Ubuntu qo'llanma sahifalari: systemd-tmpfiles(8): https://manpages.ubuntu.com/manpages/noble/man8/systemd-tmpfiles.8.html