4.3 Lekcija 1
Sertifikat: |
Linux Essentials |
---|---|
Verzija: |
1.6 |
Tema: |
4 Linux operativni sistem |
Cilj: |
4.3 Gdje se skladište podaci |
Lekcija: |
1 od 2 |
Uvod
Za operativni sistem, sve se smatra podacima. Za Linux se sve smatra datotekom: programi, obične datoteke, direktoriji, blok uređaji (tvrdi diskovi, itd.), uređaji sa karakterima (konzole, itd.), procesi kernela, soketi, particije, veze, itd. Struktura Linux direktorija , počevši od root /
, je zbirka datoteka koja sadrže podatke. Činjenica da je sve datoteka je moćna karakteristika Linuxa jer omogućava podešavanje gotovo svakog pojedinačnog aspekta sistema.
U ovoj lekciji ćemo razgovarati o različitim lokacijama na kojima se pohranjuju važni podaci kako je utvrđeno http://refspecs.linuxfoundation.org/fhs.shtml [Linux Filesystem Hierarchy Standard (FHS)] ili standard hijerarhije Linux sistema datoteka. Neke od ovih lokacija su pravi direktoriji koji trajno pohranjuju podatke na diskove, dok su drugi pseudo sistemi datoteka učitani u memoriju koji nam daju pristup podacima podsistema kernela kao što su pokrenuti procesi, korištenje memorije, hardverska konfiguracija i tako dalje. Podatke pohranjene u ovim virtualnim direktorijima koriste brojne komande koje nam omogućavaju da ih nadgledamo i rukujemo
Programi i njihove konfiguracije
Važni podaci o Linux sistemu su — bez sumnje — njegovi programi i njihove konfiguracione datoteke. Prvi su izvršne datoteke koji sadrže skupove instrukcija koje treba da pokrene procesor računara, dok su drugi obično tekstualni dokumenti koji kontrolišu rad programa. Izvršne datoteke mogu biti ili binarne datoteke ili tekstualne datoteke. Izvršne tekstualne datoteke nazivaju se skripte. Konfiguracijski podaci na Linuxu se tradicionalno pohranjuju i u tekstualne datoteke, iako postoje različiti stilovi predstavljanja konfiguracijskih podataka.
Gdje su skladištene binarne datoteke
Kao i svaka druga datoteka, izvršne datoteke žive u direktorijima koji vise od /
. Preciznije, programi su raspoređeni kroz troslojnu strukturu: prvi nivo (/
) uključuje programe koji mogu biti neophodni u režimu za jednog korisnika, drugi nivo (/usr
) sadrži većinu programa za više korisnika i treći nivo (/usr/local
) se koristi za pohranjivanje softvera koji nije obezbjeđen u distribuciji i koji je preveden lokalno.
Tipične lokacije za programe uključuju:
/sbin
-
Sadrži bitne binarne datoteke za administraciju sistema kao što su
parted
iliip
. /bin
-
Sadrži bitne binarne datoteke za sve korisnike kao što su
ls
,mv
ilimkdir
. /usr/sbin
-
Pohranjuje binarne datoteke za sistemsku administraciju kao što je
deluser
iligroupadd
. /usr/bin
-
Uključuje većinu izvršnih datoteka — kao što su
free
,pstree
,sudo
iliman
— koje mogu koristiti svi korisnici. /usr/local/sbin
-
Koristi se za pohranjivanje lokalno instaliranih programa za administraciju sistema kojima ne upravlja menadžer paketa sistema.
/usr/local/bin
-
Služi istoj svrsi kao
/usr/local/sbin
, ali za obične korisničke programe.
Od nedavno neke distribucije su počele zamjenivati /bin
i /sbin
sa simboličkim linkom na /usr/bin
i /usr/sbin
.
Note
|
Direktorij |
Osim ovih direktorija, redovni korisnici mogu imati svoje programe u:
-
/home/$USER/bin
-
/home/$USER/.local/bin
Tip
|
Možete saznati iz kojih direktorija možete pokrenuti binarne datoteke upućivanjem na varijablu |
Možemo saznati lokacije programa sa which
komandom:
$ which git /usr/bin/git
Gdje su skladištene konfiguracijske datoteke
Direktorij /etc
U ranim danima Unixa postojao je folder za svaku vrstu podataka, kao što je /bin
za binarne datoteke i /boot
za kernel(e). Međutim, /etc
(što znači et cetera) je kreiran kao sveobuhvatni direktorij za pohranjivanje svih datoteka koje ne pripadaju drugim kategorijama. Većina ovih datoteka bile su konfiguracijske datoteke. S vremenom je dodavano sve više i više konfiguracijskih datoteka tako da je /etc
postao glavni folder za konfiguracijske datoteke programa. Kao što je gore rečeno, konfiguraciona datoteka je obično lokalna, obična tekstualna (za razliku od binarne) datoteka koja kontroliše rad programa.
U /etc
možemo pronaći različite obrasce za nazive konfiguracijskih datoteka:
-
Na primjer, datoteke s ekstenzijom ad hoc ili bez ekstenzije, na primjer
group
-
System group database.
hostname
-
Naziv računala hosta.
hosts
-
Lista IP adresa i njihovih prijevoda imena hosta.
passwd
-
Baza podataka korisnika sistema — sastavljena od sedam polja odvojenih dvotočkama koje pružaju informacije o korisniku.
profile
-
Sistemska konfiguracijska datoteka za Bash.
shadow
-
Enkriptovana datoteka za korisničke lozinke
-
Initializacijske datoteke koje završavaju na
rc
:bash.bashrc
-
Systemska datoteka
.bashrc
za interaktivni bash šel. nanorc
-
Uzorak inicijalizacijske datoteke za GNU nano (jednostavan editor teksta koji se obično isporučuje sa bilo kojom distribucijom).
-
Datoteke koje završavaju na
.conf
:resolv.conf
-
Konfiguracioni fajl za rezolver — koji omogućava pristup sistemu imena internet domene (DNS).
sysctl.conf
-
Konfiguracijska datoteka za postavljanje sistemskih varijabli kernela
-
Directoriji sa
.d
sufiksom:Neki programi sa jedinstvenom konfiguracijskom datotekom (
*.conf
ili na neki drugi način) su evoluirali da imaju namjenski direktorij*.d
koji pomaže u izgradnji modularnih, robusnijih konfiguracija. Na primjer, da biste konfigurirali logrotate, naći ćetelogrotate.conf
, ali i direktorijelogrotate.d
.Ovaj pristup je koristan u onim slučajevima kada različite aplikacije trebaju konfiguracije za istu specifičnu uslugu. Ako, na primjer, paket web servera sadrži konfiguraciju logrotate, ova konfiguracija se sada može smjestiti u namjensku datoteku u direktoriju
logrotate.d
. Ovu datoteku može ažurirati paket web servera bez ometanja preostale konfiguracije logrotate. Isto tako, paketi mogu dodati određene zadatke postavljanjem datoteka u direktorij/etc/cron.d
umjesto modificiranja/etc/crontab
.U Debianu — i Debian derivatima — takav pristup je primijenjen na popis pouzdanih izvora koji čita alat za upravljanje paketima
apt
: osim klasičnog/etc/apt/sources.list
, sada nalazimo direktorij/etc/apt/sources.list.d
:$ ls /etc/apt/sources* /etc/apt/sources.list /etc/apt/sources.list.d:
Konfiguracijske datoteke u HOME
(Dot. datoteke)
Na korisničkom nivou, programi pohranjuju svoje konfiguracije i postavke u skrivene datoteke u korisničkom home direktoriju (također predstavljenom ~
). Zapamtite, skrivene datoteke počinju tačkom (.
) — otuda i njihov naziv: dotfiles ili dot datoteke.
Neke od tih dot datoteka su Bash skripte koje prilagođavaju korisnikovu šel sesiju i izvor su čim se korisnik prijavi na sistem:
.bash_history
-
Skladišti historiju komandne linije.
.bash_logout
-
Uključuje komande koje se izvršavaju pri napuštanju login šela.
.bashrc
-
Inicijalizacijska Bash skripta za non-login šel.
.profile
-
Inicijalizacijska Bash skripta za login šel.
Note
|
Pogledajte lekciju “Osnove komandne linije” da biste naučili više o Bash-u i njegovim init datotekama. |
Konfiguracijske datoteke drugih programa specifičnih za korisnika dobijaju izvor kada se pokreću njihovi odgovarajući programi: .gitconfig
, .emacs.d
, .ssh
, itd.
Linux kernel
Prije pokretanja bilo kojeg procesa, kernel se mora učitati u zaštićeno polje memorije. Nakon toga, proces sa PID-om 1
(danas češće nego ne systemd
) pokreće lanac procesa, to jest, jedan proces pokreće drugi(e) i tako dalje. Kada su procesi aktivni, Linux kernel je zadužen da im dodijeli resurse (tastatura, miš, diskovi, memorija, mrežni interfejs, itd.).
Note
|
Prije |
Gdje su skladišteni kerneli: /boot
Kernel se nalazi u /boot
— zajedno sa drugim datotekama koji se odnose na pokretanje sistema. Većina ovih datoteka uključuje komponente broja verzije kernela u svojim nazivima (verzija kernela, glavna revizija, manja revizija i broj zakrpe).
Direktorij /boot
uključuje sljedeće tipove datoteka, sa nazivima koji odgovaraju odgovarajućoj verziji kernela:
config-4.9.0-9-amd64
-
Postavke konfiguracije za kernel kao što su opcije i moduli koji su kompajlirani zajedno sa kernelom.
initrd.img-4.9.0-9-amd64
-
Početna RAM diska datoteka pomaže u procesu pokretanja tako što učitava privremeni root sistem datoteka u memoriju.
System-map-4.9.0-9-amd64
-
Datoteka
System-map
(na nekim sistemima će se zvatiSystem.map
) sadrži memorijske adrese za imena simbola kernela. Svaki put kada se kernel ponovo izgradi sadržaj datoteke će se promijeniti jer memorijske lokacije mogu biti različite. Kernel koristi ovu datoteku za traženje memorijskih adresa za određeni simbol kernela, ili obrnuto. vmlinuz-4.9.0-9-amd64
-
Kernel u samoraspakivajućem, komprimiranom formatu koji štedi prostor (otuda
z
uvmlinuz
;vm
označava virtualnu memoriju i počeo se koristiti kada je kernel prvi put dobio podršku za virtualnu memoriju). grub
-
Konfiguracijski direktorij za
grub2
bootloader.
Tip
|
Budući da je to kritična karakteristika operativnog sistema, više od jednog kernela i pridruženih datoteka se čuvaju u |
Direktorij /proc
Direktorij /proc
je jedan od takozvanih virtuelnih ili pseudo sistema datoteka jer se njegov sadržaj ne upisuje na disk, već se učitava u memoriju. Dinamički se popunjava svaki put kada se računar pokrene i stalno odražava trenutno stanje sistema. /proc
uključuje informacije o:
-
Pokrenutim procesima
-
Konfiguraciji kernela
-
Hardveru sistema
Osim svih podataka o procesima koje ćemo vidjeti u sljedećoj lekciji, ovaj direktorij također pohranjuje datoteke sa informacijama o hardveru sistema i konfiguracijskim postavkama kernela. Neki od ovih datoteka uključuju:
/proc/cpuinfo
-
Sadrži informacije o CPU sistema:
$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 158 model name : Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz stepping : 10 cpu MHz : 3696.000 cache size : 12288 KB (...)
/proc/cmdline
-
Sadrži nizove proslijeđene kernelu pri pokretanju:
$ cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet
/proc/modules
-
Prikazuje listu modula učitanih u kernel:
$ cat /proc/modules nls_utf8 16384 1 - Live 0xffffffffc0644000 isofs 40960 1 - Live 0xffffffffc0635000 udf 90112 0 - Live 0xffffffffc061e000 crc_itu_t 16384 1 udf, Live 0xffffffffc04be000 fuse 98304 3 - Live 0xffffffffc0605000 vboxsf 45056 0 - Live 0xffffffffc05f9000 (O) joydev 20480 0 - Live 0xffffffffc056e000 vboxguest 327680 5 vboxsf, Live 0xffffffffc05a8000 (O) hid_generic 16384 0 - Live 0xffffffffc0569000 (...)
Direktorij /proc/sys
Ovaj direktorij uključuje postavke konfiguracije kernela u datotekama klasifikovanim u kategorije po poddirektoriju:
$ ls /proc/sys abi debug dev fs kernel net user vm
Većina ovih datoteka djeluje kao prekidač i — stoga — sadrži samo jednu od dvije moguće vrijednosti: 0
ili 1
(“on” ili “off”). Na primjer:
/proc/sys/net/ipv4/ip_forward
-
The value that enables or disables our machine to act as a router (be able to forward packets):
$ cat /proc/sys/net/ipv4/ip_forward 0
Postoje neke iznimke:
/proc/sys/kernel/pid_max
-
The maximum PID allowed:
$ cat /proc/sys/kernel/pid_max 32768
Warning
|
Budite jako oprezni pri promjeni kernel postavki obzirom da pogrešna vrijednost može dovesti do nestabilnosti sistema. |
Hardver uređaji
Zapamtite, u Linuxu “sve je datoteka”. Ovo implicira da su informacije o hardverskom uređaju, kao i konfiguracijske postavke kernela pohranjene u posebnim datotekama koje se nalaze u virtualnim direktorijima.
Direktorij /dev
Direktorij uređaji ili /dev
sadrži datoteke uređaja (ili čvorove) za sve povezane hardverske uređaje. Ove datoteke uređaja koriste se kao interfejs između uređaja i procesa koji ih koriste. Svaka datoteka uređaja spada u jednu od dvije kategorije:
- Blok uređaji
-
To su oni u kojima se podaci čitaju i zapisuju u blokovima koji se mogu pojedinačno adresirati. Primjeri uključuju hard diskove (i njihove particije, poput
/dev/sda1
), USB fleš diskove, CD-ove, DVD-ove itd. - Karakter uređaji
-
To su oni u kojima se podaci čitaju i pišu uzastopno jedan po jedan znak. Primjeri uključuju tastature, tekstualnu konzolu (
/dev/console
), serijske portove (kao što su`/dev/ttyS0` i tako dalje), itd.
Kada prikazujete datoteke uređaja, uvjerite se da koristite ls
s opcijom ` -l` da biste razlikovali to dvoje. Možemo — na primjer — provjeriti hard diskove i particije:
# ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 may 25 17:02 /dev/sda brw-rw---- 1 root disk 8, 1 may 25 17:02 /dev/sda1 brw-rw---- 1 root disk 8, 2 may 25 17:02 /dev/sda2 (...)
Ili za serijske terminale (TeleTYpewriter):
# ls -l /dev/tty* crw-rw-rw- 1 root tty 5, 0 may 25 17:26 /dev/tty crw--w---- 1 root tty 4, 0 may 25 17:26 /dev/tty0 crw--w---- 1 root tty 4, 1 may 25 17:26 /dev/tty1 (...)
Obratite pažnju kako je prvi znak b
za blok uređaje i c
za znakovne uređaje.
Tip
|
Asterisk ( |
Dalje, /dev
uključuje specijalne datoteke koje se koriste u različite programerske svrhe:
/dev/zero
-
Pruža onoliko nultih znakova koliko se traži.
/dev/null
-
Aka bit bucket. Odbacuje sve informacije koje su mu poslane.
/dev/urandom
-
Generiše pseudo-nasumične brojeve.
Direktorij /sys
sys filesystem (sysfs
) je mountovan na direktorij /sys
. Uveden je dolaskom kernela 2.6 i značio je veliko poboljšanje na /proc/sys
.
Procesi moraju komunicirati s uređajima u /dev
i zato kernelu treba direktorij koji sadrži informacije o tim hardverskim uređajima. Ovaj direktorij je /sys
i njegovi podaci su raspoređeni u kategorije. Na primjer, da biste provjerili MAC adresu vaše mrežne kartice (enp0s3
), trebali biste catovati
sljedeću datoteku:
$ cat /sys/class/net/enp0s3/address 08:00:27:02:b2:74
Memorija i tipovi memorije
U osnovi, da bi program počeo da radi, mora se učitati u memoriju. Uopšteno govoreći, kada govorimo o memoriji, mislimo na Random Access Memory (RAM) i - u poređenju sa mehaničkim hard diskovima - ima prednost što je mnogo brži. S druge strane, nestalan je (tj., kada se računar isključi, podaci nestaju).
Bez obzira na gore navedeno - kada je memorija u pitanju - možemo razlikovati dva glavna tipa u Linux sistemu:
- Fizička memorija
-
Takođe poznata kao RAM, dolazi u obliku čipova sastavljenih od integrisanih kola koja sadrže milione tranzistora i kondenzatora. One, zauzvrat, formiraju memorijske ćelije (osnovni gradivni blok kompjuterske memorije). Svaka od ovih ćelija ima pridruženi heksadecimalni kod - memorijsku adresu - tako da se može referencirati kada je potrebno.
- Swap
-
Poznat još kao swap space ili swap prostor, to je dio virtuelne memorije koji živi na hard disku i koristi se kada više nema dostupnog RAM-a.
S druge strane, postoji koncept virtualne memorije koji je apstrakcija ukupne količine upotrebljive memorije za adresiranje (RAM, ali i prostor na disku) kako to vide aplikacije.
Komanda free
parsira /proc/meminfo
i prikazuje raspoloživost dostupne i korištene memorije sistema u jasnom obliku:
$ free total used free shared buff/cache available Mem: 4050960 1474960 1482260 96900 1093740 2246372 Swap: 4192252 0 4192252
Objasnimo tri različite kolone:
total
-
Totalna količina instalirane fizičke i swap memorije.
used
-
Količina trenutne fizičke i swap memorije u upotrebi.
free
-
Količina neiskorištene fizičke i swap memorije.
shared
-
Količina fizičke memorije korištene — uglavnom — od strane
tmpfs
. buff/cache
-
Količina fizičke memorije koju trenutno koriste baferi kernela i predmemorija stranica i ploče.
available
-
Procjena koliko je fizičke memorije dostupno za nove procese.
Podrazumjevano free
prikazuje vrijednosti u kibibajtima, ali omogućava upotrebu raznih svičeva za prikaz rezultata u različitim jedinicama mjerenja. Neke od opcija uključuju:
-b
-
Bajti.
-m
-
Mebibajti.
-g
-
Gibibajti.
-h
-
Ljudski čitljiv format.
-h
je uvijek lakše za čitati:
$ free -h total used free shared buff/cache available Mem: 3,9G 1,4G 1,5G 75M 1,0G 2,2G Swap: 4,0G 0B 4,0G
Note
|
Jedan kibibajt (KiB) je jednak 1,024 bajta dok je jedan kilobajt (KB) jednak 1000 bajta. Isto se odnosi na mebibajte, gibibajte, etc. |
Vođene vježbe
-
Koristite
which
komandu kako biste saznali lokaciju sljedećih programa i kompletirali tabelu:Program which
commandPath to Executable (output) User needs root
privileges?swapon
kill
cut
usermod
cron
ps
-
Gdje se nalaze sljedeće datoteke?
File /etc
~
.bashrc
bash.bashrc
passwd
.profile
resolv.conf
sysctl.conf
-
Objasnite značenje brojčanih elemenata za kernel datoteku
vmlinuz-4.15.0-50-generic
koja se nalazi u/boot
:Number Element Meaning 4
15
0
50
-
Koju komandu biste koristili za popis svih hard diskova i particija u
/dev
?
Istraživačke vježbe
-
Datoteke uređaja za hard diskove su predstavljene na osnovu kontrolera kojeg koriste — vidjeli smo
/dev/sd*
za diskove koji koriste SCSI (Small Computer System Interface) i SATA (Serial Advanced Technology Attachment), ali-
Kako su predstavljeni stari IDE (Integrated Drive Electronics) diskovi?
-
I moderni NVMe (Non-Volatile Memory Express) diskovi?
-
-
Pogledajte datoteku
/proc/meminfo
. Uporedite sadržaj ove datoteke sa izlazom komandefree
i identificirajte koji ključ iz/proc/meminfo
odgovara sljedećim poljima u izlazu `free`komande:free
output/proc/meminfo
fieldtotal
free
shared
buff/cache
available
Sažetak
U ovoj lekciji naučili ste o lokaciji programa i njihovih konfiguracijskih datoteka u Linux sistemu. Važne činjenice koje treba zapamtiti su:
-
U osnovi, programi se mogu pronaći u strukturi direktorija od tri razine:
/
,/usr
i/usr/local
. Svaki od ovih nivoa može sadržavatibin
isbin
direktorije. -
Konfiguracijske datoteke su pohranjene u
/etc
i~
. -
Datoteke sa tačkama su skrivene datoteke koje počinju tačkom (
.
)
Također smo razgovarali o Linux kernelu. Važne činjenice su:
-
Za Linux, sve je datoteka.
-
Linux kernel živi u
/boot
zajedno sa drugim datotekama koje se odnose na pokretanje sistema. -
Da bi procesi počeli da se izvršavaju, kernel se prvo mora učitati u zaštićeno polje memorije.
-
Posao kernela je dodjela sistemskih resursa procesima.
-
Virtuelni (ili pseudo) sistem datoteka
/proc
pohranjuje važne kernel i sistemske podatke na promjenjiv način.
Isto tako, istražili smo hardverske uređaje i naučili sljedeće:
-
Direktorij
/dev
pohranjuje posebne datoteke (poznate i kao čvorovi) za sve povezane hardverske uređaje: blok uređaji ili karakter uređaji. Prvi prenos podataka u blokovima; ovaj drugi, jedan po jedan znak. -
Direktorij
/dev
također sadrži druge posebne datoteke kao što su/dev/zero
,/dev/null
ili/dev/urandom
. -
Direktorij
/sys
pohranjuje informacije o hardverskim uređajima raspoređenim u kategorije.
Konačno smo se dotakli memorije. Naučili smo:
-
Program se pokreće kada se učita u memoriju.
-
Šta je RAM (Random Access Memory).
-
Šta je swap.
-
Kako prikazati upotrebu memorije.
Komande korištene u ovoj lekciji:
cat
-
Konketiraj/prikaži sadržaj datoteke.
free
-
Prikaži količinu dostupne i korištene memorije sistema.
ls
-
Prikaži sadržaj direktorija.
which
-
Prikaži lokaciju programa.
Odgovori na vođene vježbe
-
Koristite
which
komandu kako biste saznali lokaciju sljedećih programa i kompletirali tabelu:Program which
commandPath to Binary (output) User needs root
privileges?swapon
which swapon
/sbin/swapon
Yes
kill
which kill
/bin/kill
No
cut
which cut
/usr/bin/cut
No
usermod
which usermod
/usr/sbin/usermod
Yes
cron
which cron
/usr/sbin/cron
Yes
ps
which ps
/bin/ps
No
-
Gdje se nalaze sljedeće datoteke?
File /etc
~
.bashrc
No
Yes
bash.bashrc
Yes
No
passwd
Yes
No
.profile
No
Yes
resolv.conf
Yes
No
sysctl.conf
Yes
No
-
Objasnite značenje brojčanih elemenata za kernel datoteku
vmlinuz-4.15.0-50-generic
koja se nalazi u/boot
:Number Element Meaning 4
Kernel verzija
15
Glavna revizija
0
Manja revizija
50
Broj zakrpe
-
Koju komandu biste koristili za popis svih hard diskova i particija u
/dev
?ls /dev/sd*
Odgovori na istraživačke vježbe
-
Datoteke uređaja za hard diskove su predstavljene na osnovu kontrolera kojeg koriste — vidjeli smo
/dev/sd*
za diskove koji koriste SCSI (Small Computer System Interface) i SATA (Serial Advanced Technology Attachment), ali-
Kako su predstavljeni stari IDE (Integrated Drive Electronics) diskovi?
/dev/hd*
-
I moderni NVMe (Non-Volatile Memory Express) diskovi?
/dev/nvme*
-
-
Pogledajte datoteku
/proc/meminfo
. Uporedite sadržaj ove datoteke sa izlazom komandefree
i identificirajte koji ključ iz/proc/meminfo
odgovara sljedećim poljima u izlazu `free`komande:free
output/proc/meminfo
fieldtotal
MemTotal
/SwapTotal
free
MemFree
/SwapFree
shared
Shmem
buff/cache
Buffers
,Cached
andSReclaimable
available
MemAvailable