Kako podesiti pametne telefone i računare. Informativni portal

Struktura sistema datoteka. Linux sistem datoteka i struktura direktorija

Linux sistem datoteka

Jedan od mnogih važne komponente u Linuxu je sistem datoteka. AT ovaj odjeljak koncept će biti razmotren sistem podataka i njegovu svrhu; hijerarhija sistema datoteka Linux OS-a; Tipovi datoteka OS Linux. Ostala pitanja vezana za administraciju sistema datoteka bit će detaljnije obrađena u Modulu 3.

Svrha sistema datoteka

U Linuxu, kao iu svakom drugom UNIX operativnom sistemu, svaki objekat je datoteka pohranjena u sistemu datoteka. Sistem datoteka je uređaj (kao što je čvrsti disk) formatiran za skladištenje datoteka. Sistemi datoteka se mogu locirati na tvrdi diskovi, diskete, CD-ROM-ove ili druge medije koji omogućavaju nasumičan ili sekvencijalni pristup podacima.

Konvencionalno, sistem datoteka Linux OS može se podijeliti na sljedeće komponente.

Imenski prostor - metode imenovanja za objekte sistema datoteka i njihova hijerarhijska organizacija.

Interfejs za programiranje aplikacija (API) - skup sistemskih poziva i biblioteka dizajniranih za upravljanje objektima sistema datoteka.

Sigurnosni model - sadrži opšta šema zaštita, odvajanje prava pristupa objektima i dijeljenje objekata.

Tehnička implementacija - programski kod povezivanje logičkih modela sistem datoteka sa hardverom.

Glavni zadaci sistema datoteka su:

organiziranje pohranjenih podataka;

jednostavno i brz pristup na pohranjene podatke;

osiguravanje integriteta pohranjenih podataka.

Tačan format i načini na koje se datoteke pohranjuju u Linuxu nisu bitni, kao što sistem pruža zajednički interfejs za sve tipove sistema datoteka koje prepoznaje. OS Linux fajl podrazumevani sistem je ext3fs. Prilikom pristupa bilo kojem sistemu datoteka iz OS-a linux podaci su predstavljeni kao hijerarhija direktorija sa datotekama koje sadrže, zajedno sa ID-ovima vlasnika i grupe, bitovima dozvole i drugim atributima.

Hijerarhija sistema datoteka

Hijerarhija direktorija sistema datoteka Linux OS je u skladu sa standardom sistema hijerarhije sistema datoteka (FHS) općenito prihvaćenim u UNIX svijetu. Glavna prednost ovaj standard stvar je određene vrste datoteke se nalaze u svojim odgovarajućim direktorijima.

Na primjer, većina konfiguracijskih datoteka nalazi se u /etc direktoriju, a datoteke evidencije različitih usluga nalaze se u /var/log direktoriju.

Opis direktorija sistema datoteka OS linux

Direktoriji /bin, /usr/bin, /usr/locl/bin, /sbin, /usr/sbin i /usr/local/sbin sadrže komande instalirane na sistemu. Prilikom rada na sistemu redovni korisnik, imat ćete pristup samo naredbama direktorija /bin, /usr/bin i /usr/locl/bin, jer FHS navodi da samo administrativne naredbe trebaju biti sadržane u sbin direktorijima.


Slika 1.2 Struktura direktorija Linux OS-a

Glavni direktorij sistema datoteka Linux OS je korijenski direktorij /. Ispod korijenskog direktorija su svi ostali direktoriji kreirani na lokalnom diskovni podsistem ili montiran sa eksternih uređaja. Procedura za montiranje sistema datoteka znači povezivanje direktorija postojećeg sistema datoteka, koji se zove tačka montiranja, sa korijenskim direktorijumom novog sistema datoteka.

Montiranje sistema datoteka na tačku montiranja se vrši pomoću naredbe mount. Sljedeća lista prikazuje primjer nosača DVD drajv a, koji sadrži RedHatEnterpriseLinux 5 OS distribuciju.

# montiraj /dev/hdc /mnt/

mount: blok uređaj /dev/hdc je zaštićen od pisanja, montiranje samo za čitanje

Kao rezultat izvršavanja naredbe mount, sistem je prikazao informaciju da je blok uređaj (in ovaj slučaj DVD pogon) je montiran u načinu čitanja.

Lista montiranih sistema datoteka pohranjena je u /etc/fstab datoteci. Zahvaljujući tome, to je moguće automatska provera integritet sistema datoteka koristeći komandu fsck i montiranje sistema datoteka u fazi bootstrap, kao i pokretanje skraćenih naredbi kao što je mount /var/spool. Informacije sadržane u ovoj datoteci odražavaju lokacije sistema datoteka na disku. Datoteka /etc/fstab će biti detaljnije obrađena u Modulu 3.

Demontiranje sistema datoteka se vrši naredbom umount. "Zaključani" sistem datoteka se ne može isključiti. Ne bi trebalo da sadrži nikakve otvorite fajlove, niti trenutni direktoriji pokrenutih procesa. Ako sistem datoteka koji se demontira sadrži izvršne programe, oni se ne smiju pokretati. Sljedeća lista pokazuje primjer demontaže prethodno montiranog sistema datoteka u /mnt direktoriju.

# umount /mnt # je -1 /mnt ukupno 0

Da biste saznali koji su uređaji ugrađeni u sistem ovog trenutka morate pokrenuti naredbu mount bez opcija. Sljedeći popis pokazuje primjer određivanja montiranih uređaja.

# montirati /dev/sda2 na /type ext3 (rw)

proc on /proc tip proc (rw)

sunrpc na /var/lib/nfs/rpc_pipefs tip rpc_pipefs (rw) /dev/hdc na /mnt tip iso9660 (ro)

Kao što možete vidjeti, izlaz naredbe mount sekvencijalno prikazuje montirani uređaj, tačku montiranja, tip sistema datoteka i dodatne opcije mount.

Tipovi fajlova

Kada radite s Linux OS-om, važno je razumjeti da je svaki OS objekt datoteka. Ovo je ključna karakteristika Linux operativnog sistema u poređenju sa operativnim sistemima iz porodice Windows.

Datoteke se razlikuju i po svojoj strukturi i po namjeni. Linux definira sedam tipova datoteka:

redovni fajlovi (obični fajlovi);

imenici;

imenovane cijevi;

blok fajlove uređaja;

datoteke sa znakovnim uređajima.

Možete odrediti tip datoteke pomoću naredbe Is -Id. Prvi znak u izlaznoj liniji označava tip datoteke. Sljedeći popis daje informacije o datoteci

/dev/hdc. # Je -Id /dev/hdc

Redovni fajlovi

Uobičajene datoteke uključuju binarne datoteke, biblioteke, tekstualne datoteke i razne datoteke aplikacija. Linux OS ne nameće nikakva ograničenja na strukturu ovih datoteka. Njihovom sadržaju se može pristupiti i sekvencijalno i direktno.

Katalozi

Linux ima ono što je poznato kao posebni direktoriji. Posebni direktoriji kao što je "." i "..", označavaju trenutni radni direktorij i njegov roditeljski direktorij, respektivno.

U Linuxu je uobičajeno razlikovati simboličke i tvrde veze, od kojih svaka ima posebno značenje.

Simbolička veza vam omogućava da navedete njen alias umjesto imena datoteke. U procesu traženja datoteke putem simboličkih veza, kernel izdvaja imena pohranjena u njima. Čvrsta veza je direktna veza, tj. upućuje direktno na inode datoteke, dok simbolička veza ukazuje na datoteku po njenom imenu. Datoteka kojoj se adresira simbolička veza i sama veza su različiti objekti sistema datoteka.

Simbolički linkovi mogu sadržavati proizvoljan naziv, tj. dozvoljeno im je da upućuju na datoteke pohranjene u drugim sistemima datoteka, pa čak i na nepostojećih fajlova. Čvrste veze ne mogu upućivati ​​na fajl koji se nalazi na drugom sistemu datoteka.

Linux OS broji broj veza do svake datoteke, a kada se datoteka izbriše, ne oslobađa blokove podataka dok se ne izbriše posljednja veza do nje.

utičnice

Utičnica je posebna vrsta datoteke koju koriste procesi za međusobnu komunikaciju. Socket veze omogućavaju procesima da komuniciraju bez utjecaja drugih procesa. Postoji nekoliko tipova soketa u Linux OS-u, čija upotreba pretpostavlja prisustvo mrežna infrastruktura. Lokalne utičnice su dostupne samo na lokalnom računaru, njima se pristupa preko posebnih objekata sistema datoteka, a ne preko mrežni portovi. Takve utičnice se zovu UNIX domenske utičnice (UNIXdomainsocket). Pored lokalnih utičnica, postoje mrežne utičnice koje omogućavaju procesima da komuniciraju preko mreže.

Iako drugi procesi prepoznaju datoteke socketa kao unose direktorija, samo procesi s odgovarajućom vezom mogu čitati i pisati datoteke socketa. Radite sa lokalnim utičnicama razne usluge Linux OS - CUPS, XWindow i Syslog.

Imenovane cijevi ( FIFO)

Fajlovi ovog tipa slični su utičnicama po tome što se također koriste za komunikaciju između procesa, ali za razliku od utičnica, imenovane cijevi prenose podatke samo u jednom smjeru.

Datoteke uređaja blokova i karaktera

Datoteke blokova i karakternih uređaja omogućavaju aplikacijama pristup sistemskom hardveru i perifernim uređajima. U fazi konfiguracije, potrebni moduli dizajnirani za kontrolu hardvera sistema se dinamički učitavaju u jezgro Linuxa. Za menadžment određeni uređaj odgovara na poseban modul koji se zove drajver uređaja.

Drajveri uređaja formiraju standardni interfejs za interakciju koji korisnik percipira kao skup običnih datoteka. Nakon što primi zahtjev za datoteku karaktera ili blok uređaja, kernel prosljeđuje zahtjev odgovarajućem drajveru. Datoteke blokova i karakternih uređaja sami po sebi nisu upravljački programi. Mogu se smatrati gateway-ima preko kojih vozač prima zahtjeve za obavljanje predviđenih operacija.

Datoteke znakovnih uređaja ne koriste baferovanje tokom I/O operacija. Sve I/O operacije se izvode odmah čim stignu. Karakterni uređaji uključuju virtuelne terminale, modeme i druge uređaje koji ne podržavaju slučajni pristup podacima.

Linux (Linux) je operativni sistem koji je danas zapravo jedini alternativna zamjena Windows OS iz Microsofta. Linux potiče iz 1991. godine, kada je bio mladi programer iz Finske Linus Torvalds počeo da radi na prvoj verziji sistema, koja je dobila ime po njemu. Zora popularnosti Linuxa počela je sa samim njegovim početkom. To je prije svega zbog činjenice da kernel ovog OS-a, kao i većina programa napisanih za njega, ima vrlo važne kvalitete.

Kernel Kernel je operativni sistem niskog nivoa. Mašinski ovisan dio tradicionalnog nivoa koji obrađuje datoteke koje se pokreću iz kernela. UNIX OS uključuje sljedeće komponente: diskove, mrežu i druge neophodne operacije. (dok to zavisi od karakteristika opreme); Jezgro Linux operativnog sistema je monolitni sistem arhitekture mikrokernela. promocija i inicijalizacija sistema na niskom nivou sa prekidima; Prilikom kompajliranja kernela možete omogućiti dinamičku preprocesu internih i eksterno upravljanje memorija (u dijelu koji se odnosi na učitavanje i rasterećenje veoma velikog broja komponenti kernela – karakteristike hardverske podrške za virtuelne tzv. module. U trenutku učitavanja memorijskog modula); njegov kod se učitava na nivou sistema i povezuje sa ostatkom kernela. Funkcije se mogu koristiti unutar modula. bilo koji kontekst procesa izvezenog kernela se prebacuje između korisničkog i kernel moda; dijelovi drajvera uređaja specifični za ciljnu platformu.

Struktura fajla(sistem) /bin - binarni fajlovi korisnika /boot - statički fajlovi za pokretanje /cdrom - istorijski odabrana tačka montiranja za CD-ove /dev - fajlovi uređaja /etc - konfiguracijske datoteke/home - kućni direktoriji /lib - osnovne dijeljene biblioteke /izgubljeno+nađeno - oporavljeni fajlovi /media - medij koji se može montirati /proc - kernel i procesne datoteke /root - početni direktorij root korisnik/srv - podaci servisne službe/tmp- privremeni fajlovi/usr - korisnik binarne datoteke i podaci samo za čitanje (prikazano na slici)

Interfejs ( grafička ljuska) je program koji organizira interakciju korisnika sa računarom. Pruža podršku za prozore, menije, ikone, miša i druge poznate GUI elemente - GUI korisnik. Složenija grafička okruženja su izgrađena na vrhu X; najpopularniji od njih su KDE i GNOME. GUI je skup ikona, menija, dijaloga, panela, prozora i ostalog grafičkih elemenata, omogućavajući korisnicima lak rad sa računarom i aplikacijama. KDE i Gnome su integrisana desktop okruženja. Korisnici rade sa elementima interfejsa i programima.

Utilities Utility (engleski utility ili alat) - pomoćni kompjuterski program u ugrađen u Linux softverski uslužni programi i jezicima. sastoji se od g++ -GNU C++ kompajlera; Perl je veoma moćan skript jezik; g 77 - GNU FORTRAN kompajler; (parametri, podešavanja, podešavanja), ili izvršiti proces f 2 c - transkoder sa FORTRAN-a na C; promjene parametara (automatizirajte ih). Fort 77 je FORTRAN kompajler. Izvodi f 2 c, a zatim generalno softvera za obavljanje specijalizovanih tipičnih zadataka. Uslužni programi omogućavaju pristup funkcijama. Tipovi uslužnih programa za komunikaciju sa OS koristi gcc ili g++; Nezavisni uslužni programi koji ne zahtijevaju operativni sistem za svoj rad, Grep - traže dio teksta u datotekama koji odgovara ukucanoj maski. Maska je definirana sa Sistemski uslužni programi, uključen u isporuku OS-a i zahtijeva njegovu pomoć standardni sistem notacija, nazvana prisustvo " regularni izrazi"; Vrste uslužnih programa prema funkcijama Upravljači datotekama; Arhivari (sa moguća kompresija podaci); gledaoci; Uninstaller - softver [; program za Tr - uslužni program za prevođenje (drugim riječima - zamjena slova u tekstualnoj datoteci); Gawk - GNU awk (koristi se za obradu formatiranih tekstualnih datoteka); softver za uklanjanje sed - uslužni program za obradu tekstualnih datoteka;

Veoma se razlikuje od uređaja u Windowsima. Za početak, u Linuxu nema C ili D diskova fizički disk(ili nekoliko) tokom instalacije sistema se dijeli na direktorije i poddirektorije. Glavni, korijenski direktorij je označen simbolom / (kosa crta) Umjesto swap datoteke, postoji posebna particija /swap. Svaki direktorij se može formatirati u željeni sistem datoteka, ovisno o zadacima korisnika. Na primjer Ext3, ReiserFS, JFS ili drugi.
U različitim distribucijama Linuxa, shema i svrha nekih direktorija mogu se neznatno razlikovati.
Možete kreirati vlastite direktorije. Imam fasciklu sa filmovima na posebnom čvrstom disku. U root particiji izgleda kao /films.

Opis glavnih direktorija i poddirektorija u linuxu:
/bin- Sadrži
glavne komandne datoteke.

/boot- Ovaj direktorij sadrži pokretač sistema (Grub ili Lilo) i datoteke potrebne za pokretanje sistema.

/dev- dev direktorij sadrži datoteke koje opisuju uređaje računara. Na linuxu se svi uređaji smatraju datotekama. Čak su i portovi, diskovi, štampači sve datoteke.

/etc- Direktorij koji sadrži konfiguracijske datoteke sistema, programe, skripte za pokretanje.
/etc/rc.d- komandne datoteke koje pokreću aplikacije kada se sistem pokrene.
/etc/passwd- svi korisnički podaci su šifrirani u datoteci.
/etc/fstab- datoteka sadrži informacije o sistemima datoteka koji se automatski montiraju pri pokretanju sistema

/Dom- Korisnik, početni imenik. Linux može imati više korisnika. Svaki korisnik ima svoj direktorij (na primjer /home/user) Sadrži sve korisničke datoteke kojima ima direktan pristup
pisati/brisati. Također u početnom imeniku su korisnički programi, postavke. Njihova imena počinju tačkom i izgledaju, na primjer, ovako - .kde .fonts

/lib- Ovdje su razne sistemske biblioteke, moduli kernela
/lib/firmware- neslobodni kernel moduli sa zatvorenom licencom
/lib/modules- moduli kernela koji se mogu učitati. Na primjer, drajveri uređaja, sistem datoteka.

/mnt- Različiti uređaji koji se mogu priključiti su privremeno montirani u ovom direktoriju. Fleš diskovi, flopi diskovi, diskovi

/opt- Instaliran u direktoriju dodatni paketi programe.

/proc- Direktorij sa virtuelnim sistemom datoteka. Ona, u obliku datoteka, sadrži informacije o procesima koji se odvijaju u sistemu.
/proc/modules- ova datoteka sadrži informacije o listi učitanih modula kernela.
/proc/cpuinfo - detaljne informacije o procesoru.
/proc/meminfo -
informacije o ram memorija.
/proc/devices- drajveri uređaja ugrađeni u jezgro sistema.
/proc/uptime- informacije o vremenu neprekidnog rada sistema. One. Vrijeme rada bez ponovnog pokretanja.
/proc/version- verzija linux kernela koju koristi sistem.
Svi ovi podaci mogu se prikazati u konzoli pomoću naredbe mačka.
na primjer mačka /proc/cpuinfo

/root- Početni direktorij administratora (superkorisnika) sistema. Koristi se od strane administratora ako glavni početni direktorij iz nekog razloga nije dostupan.

/sbin- Ovdje su glavni programi koje izvršava root.

/tmp- Direktorij za privremeno skladištenje podataka po programima.

/usr- Glavni direktorij za instaliranje programa. Osim programa, sadrži dokumentacijske datoteke, izvorne kodove programa i kernele.
/usr/local- u ovom imeniku su
zasebno instalirani softverski paketi.
/usr/src- izvori instalirane programe i jezgra.
/usr/man- ručne datoteke za instalirane programe.
/usr/lib- nepromjenjive konfiguracijske datoteke i programski podaci.

/var- Direktorij var sadrži podatke koji se često mijenjaju tokom rada sistema. Na primjer, evidencije, programske keš memorije.
/var/local- promjenjivi programski podaci, postavlja administrator u /usr/local.
/var/log- trupci raznih sistemski programi.
/var/run- privremeni fajlovi. Informacije se pohranjuju u njima do sljedećeg ponovnog pokretanja sistema.
/var/tmp- direktorij za privremene datoteke.

Struktura datoteka Linux-a je vrlo različita od one u Windows-u, pa ako odlučite ozbiljno proučavati sisteme slične UNIX-u, onda je, po mom mišljenju, bolje početi sa strukturom direktorija.

Istorija poznaje desetine slučajeva kada je nepripremljen pilot uspešno sleteo na avion. Ili je, na primjer, doktor početnik uspješno obavio operaciju terenski uslovi. Ipak, mislim da je malo verovatno da bi neko dobrovoljno pristao da zauzme njihovo mesto...

čemu vodim? I na činjenicu da Windows korisnik koji je prvi put vidio Linux, naravno, moći će se nositi s tim (ići na internet ili pogledati video), međutim, čim se pojavi bilo kakva vanredna situacija, više neće znati što da radi!

Stoga, da ne biste bili tako neznalica, morate naučiti barem osnove i principe operativnog sistema s kojim planirate raditi. A u današnjem članku ćemo pogledati strukturu Linux direktorija, kao i karakteristike rasporeda tvrdog diska i montiranja particija.

Kako poslovica kaže, izgled je varljivo. Moderne Linux distribucije mogu izvana i prema osnovnim principima rada u velikoj mjeri kopirati poznate mnogima Windows okruženje. Međutim, dovoljno je samo "zakopati" dublje i odmah ćemo vidjeti da imamo nešto sasvim drugo i neshvatljivo :)

To je lako provjeriti na primjeru Linux Mint. Otvorimo folder "Računar" na radnoj površini i pogledajmo njegov sadržaj:

Kao što vidite, ovdje, pored povezanog fleš diska, nema nijedne poznate particije tvrdog diska, osim uređaja "File system". Nalazi se ovdje (ili bolje rečeno, u korijenskom direktoriju zvanom "/", koji se ponekad pogrešno naziva "/root/", iako je poseban folder na "/") prema zadanim postavkama i pohranjuje sve podatke, uključujući sistemske i korisničke datoteke! Veoma čudno i na prvi pogled neshvatljivo. Hajde da shvatimo...

Činjenica je da Linux koristi fundamentalno drugačiji pristup organizaciji i radu sa datotečnim sistemom od Windowsa. Ako u Windows baziran su particije hard diska na kojima možemo kreirati proizvoljne foldere sa fajlovima, onda je u Linuxu sve zasnovano na jasnoj hijerarhiji direktorijuma koja ne zavisi od rasporeda hard diska i regulisana je FHS standardom (skraćeno engleski "Filesystem Hierarchy Standard" - "standard hijerarhije sistema datoteka ").

Koncept diskova i njihovih particija, naravno, postoji i u Linuxu, ali ovdje je primarna struktura foldera, u jednu od kojih (obično "/media/", "/dev/" ili "/mnt/" ) i montiran Razne vrste diskovi. Sami diskovi se obično nazivaju u zavisnosti od vrste njihove veze: SATA - sda (sdb, itd., u zavisnosti od njihovog broja), i IDE - hda (hdb...). Particije na diskovima su jednostavno numerisane (na primjer, sda1, hdb2).

Odvojeni Linux direktoriji mogu se postaviti na različite particije različiti diskovi pa čak i daljinski mrežna skladišta. Jedini uslov je da se svi moraju montirati prije pokretanja sistema. Ovo se obično radi automatski kada Pokretanje Linuxa, ali ponekad može biti potrebno ručno urediti parametre.

Mislim da smo malo shvatili osnovne principe organiziranja pohrane informacija u Linuxu, pa predlažem da se posebno upoznate sa strukturom direktorija.

Glavni Linux folderi

Iako postoje stotine Linux distribucija, većina njih ima sličnu strukturu direktorija. S jedne strane, ovo pruža određenu kompatibilnost sa standardima, a s druge strane, jednostavnost korištenja: korisnik koji je navikao organizirati datotečni sistem na jednoj Linux distribuciji će se prilično lako prebaciti na korištenje druge ako je potrebno.

U principu, nije potrebno znati svrhu svih foldera po memoriji, međutim, takvo znanje je dobrodošlo. Stoga predlažem da u obliku tabele razmotrimo glavne direktorije, njihovu svrhu i djelomično poređenje sa Windows komponente(Opisujem prema Linux Mint-u koji imam, tako da se lista foldera na drugim sistemima može neznatno razlikovati).

Katalog Svrha Windows ekvivalent (ako postoji)
/ Pohranjuje cjelokupnu strukturu direktorija sistema disk C:
/bin/ Pohranjuje binarne izvršne datoteke sistemskih uslužnih programa C:\Windows\System32
/boot/ Pohranjuje kernel sistema i druge datoteke za pokretanje C:\Windows
/CD ROM/ Pohranjuje tačke montiranja za diskove -
/dev/ Pohranjuje datoteke povezanih uređaja po vrsti ( tvrdi diskovi, video uređaji, itd.) ili pseudo uređaji (npr. /dev/null i /dev/zero) -
/etc/ Čuva neke datoteke sa sistemskim postavkama i postavke za instalirane programe Djelomično C:\Windows\System32, dijelom C:\Program Files
/Dom/ Pohranjuje kućne foldere korisnika sistema sa njihovim postavkama i podacima C:\Documents and Settings ili C:\Users
/lib/ Pohranjuje većinu biblioteka standardnim programima a neki uspostavljeni Djelomični C:\Windows i C:\Windows\System32
/izgubljeno+nađeno/ Pohranjuje datoteke koje su, u pravilu, kao rezultat bilo kakvih kvarova, ostale nezapisane ni u jednom direktoriju, ali u isto vrijeme nisu bile označene za prepisivanje. Korisnik mu obično nema pristup Djelomično C:\Recycler (smeće)
/mediji/ Pohranjuje tačke za montiranje za svakoga prenosivi medij(fleš diskovi, flopi diskovi, prenosivi hard diskovi) -
/mnt/ Čuva privremene tačke montiranja za uređaje i njihove sisteme datoteka koji su ručno dodani -
/opt/ Pohranjuje dodatne pakete raznih programa C:\Users\Admin\Application Data
/proc/ Pohranjuje informacije o pokrenuti procesi i rad sistemskog kernela Djelomični upravitelj zadataka
/root/ Pohranjuje podatke za superkorisnika (root) sistema Djelomično C:\Users\Admin
/trčati/ Pohranjuje privremene datoteke koje se izvršavaju tokom procesa pokretanja sistema
/sbin/ Pohranjuje većinu sistemskih programa za administraciju i konfiguraciju OS-a Djelomično C:\Windows\System32
/srv/ Pohranjuje fajlove odgovorne za rad serverskog dijela sistema i razne protokole za prijenos podataka preko mreže (HTTP, FTP, itd.) Djelomično C:\Windows\System32
/sys/ Pohranjuje virtuelni sistem datoteka sa podacima o instaliranih uređaja i vozači Djelomični upravitelj uređaja
/tmp/ Pohranjuje privremene datoteke C:/windows/temp
/usr/ Pohranjuje podatke korisnika sistema i datoteke ručno instaliranih programa. Djelomično C:\Korisnici\
/var/ Pohranjuje datoteke s različitim podacima o promjeni, logovima, keš memorijama itd. -

Pored foldera u samom root-u, treba obratiti pažnju i na neke poddirektorije:

Katalog Svrha Windows ekvivalent (ako postoji)
/etc/X11/ Pohranjuje datoteke postavki sistema X Window -
/etc/samba/ Pohranjuje konfiguracijske datoteke za Samba server koji se koristi za komunikaciju mrežne fascikle Windows -
/home/korisničko ime/ Pohranjuje datoteke i konfiguraciju određenog korisničkog računa (Početni folder) C:\Korisnici\Korisničko ime
/usr/bin/ Pohranjuje niz programa koji su potrebni za rad u višekorisničkom načinu rada -
/usr/share/ Čuva opšte podatke instaliranih programa -
/usr/src/ Pohranjuje izvorne datoteke kernela -
/var/cache/ Pohranjuje programske keš memorije i softverske pakete preuzete iz spremišta -
/var/igre/ Pohranjuje spremanja i dostignuća instaliranih igara -
/var/log/ Čuva logove (logove) sistema i instaliranih programa -
/var/mail/ Pohranjuje postavke poštanski sandučići korisnika -
/var/run/ Pohranjuje podatke o pokrenutim procesima i demonima Djelomični upravitelj zadataka
/var/tmp/ Pohranjuje privremene datoteke koje se čuvaju kada se sistem ponovo pokrene -
/var/www/ Pohranjuje web stranice koje su prikazali lokalni serverski alati -

Nešto o sistemima datoteka

Pošto smo odlučili da se manje-više temeljito pozabavimo strukturom Linux direktorija, ne možemo ne spomenuti tako važnu stvar kao što je sistem datoteka.

U Windows-u smo navikli da koristimo tradicionalni NTFS i da se ne zavaravamo (pa, FAT32 na fleš diskovima ili UDF na diskovima). U svijetu Linuxa sve je mnogo raznolikije. Postoji podrška za sve Windows FS, ali je preporučljivo koristiti specijalni sistemi, optimiziran za operativne sisteme slične UNIX-u.

Svi datotečni sistemi se mogu uslovno podeliti u dve grupe: sa dnevnikom i bez dnevnika. Sistemi datoteka u dnevniku dodeljuju određeno mesto za skladištenje dnevnika sa listom datoteka na računaru, njihovim atributima i lokacijom. Oni su otporniji na kvarove i garantuju veći integritet podataka. Sistemi bez dnevnika su brži i ne zahtijevaju prostor za pohranjivanje dnevnika, ali ne garantuju stabilno skladištenje informacija, budući da sve radnje s fajlovima obavljaju direktno, bez evidentiranja.

Kako ne bih nabrajao sve sisteme datoteka dostupnih danas, mislim da je bolje spomenuti samo najbolje od njih, koji su najbolji izbor za Linux.

  1. Ext4 je sistem datoteka za vođenje dnevnika koji je standardan u većini modernih Linux distribucija. Dobro je zaštićen od problema s fragmentacijom i optimiziran za rad veliki fajlovi. Ako tokom instalacije niste ručno formatirali particiju za sistem, onda najvjerovatnije imate upravo Ext4.
  2. ext2- sistem datoteka bez dnevnika, koji je bio glavni za stare Linux distribucije (do 2000-ih). Ima niz ograničenja za rad sa velikim fajlovima, međutim, istovremeno je i najbrži FS, pa se često koristi u raznim uporedni testovi kao referenca.
  3. Reiser4 je sistem datoteka za vođenje dnevnika koji mnogi napredni korisnici preporučuju za korištenje na Linuxu. Njegova prednost je dobra stabilnost i velika brzina rad, koji se, osim toga, može dodatno poboljšati aktiviranjem posebnog dodatka za kompresiju podataka.
  4. btrfs(također B-tree FS) je sistem datoteka za dnevnik koji je nedavno (2007. godine) razvio poznata kompanija Oracle. Njegove karakteristike uključuju pohranjivanje indeksa datoteka u takozvana "B-stabla" - hijerarhijske strukture koje na najoptimalniji način koriste RAM resurse zbog male dubine ugniježđenja podataka.
  5. SWAP- posebna vrsta sistema datoteka bez dnevnika koji implementira strukturu skladištenja podataka sličnu ćelijskoj strukturi RAM-a. Zbog toga se koristi za implementaciju datoteke stranica u Linuxu.

Na većini modernih distribucija, zadana vrijednost HDD formatiran u Ext4, kao i SWAP, pod kojim se dodjeljuje veličina slična veličini instalirane RAM-a. Tako, na primjer, izgleda standardni raspored diska pod Linux Mint-om, što se radi ako ne utičete na ručno kreiranje particija:

Međutim, naprednim korisnicima se savjetuje da unaprijed particioniraju disk na "sofisticiraniji" način prije instalacije kako bi osigurali bolju sigurnost podataka tokom prisilne ponovne instalacije sistema montiranjem zasebnih direktorija na kreirane particije. Razmotrimo nekoliko sličnih "recepata" za particioniranje diska.

Particioniranje diska

Mislim da ste već shvatili zašto sva ova gužva sa različitim odjeljcima. Ako, na primjer, pokvarite nešto u instaliranom na regularan način(po particiji) na Linux sistemu, neizbježno ćete izgubiti sve svoje korisničke podatke prilikom ponovnog instaliranja! Međutim, ako se čuvaju odvojeno od sistemske datoteke, tada će za ponovnu instalaciju biti potrebno utjecati samo na sistemske direktorije, a zatim montirati postojeće korisničke direktorije.

Samo prva opcija označavanja je premještanje direktorija "/home/" na zasebnu particiju diska. To jest, u stvari, moramo particionirati disk na tri particije:

Ako planirate dual boot uz instalaciju Windows-a, tada je pored tri particije o kojima smo gore govorili, bolje staviti dvije particije formatirane u NTFS umjesto sda1 i sda2: jednu za disk C, a drugu za disk D.

Napredniji korisnici imaju tendenciju da naprave složeniji raspored diska, uzimajući u obzir njegovu podelu na odvojena područja za pokretanje i područja za izvršavanje programa:

U principu, neki korisnici montiraju gore spomenute direktorije na sda4 na zasebne particije, a neki ih uopće ne dodjeljuju. Sve zavisi od toga koje zadatke planirate da rešavate na svom računaru. Ako još niste odlučili kako ćete koristiti pojedinačne direktorije, onda preporučujem da ostavite nekoliko desetina gigabajta prostora na tvrdom disku neraspoređenog "u rezervi". Dakle, u bilo kom trenutku, direktno ispod vašeg sistema, možete ponovo montirati potrebne direktorijume na novokreirane particije.

I što je najvažnije - kako kreirati ove sekcije! Da biste to učinili, preporučujem preuzimanje već spomenutog programa u obrascu boot image, snimite ovu sliku na USB fleš disk ili disk i pokrenite sistem sa njega.

Tokom procesa pokretanja sa LiveCD-a, biće vam postavljen niz pitanja o opcijama pokretanja. Svugdje ostavljamo sve po defaultu, osim ekrana sa izborom jezika. Tamo ćete morati unijeti odgovarajući broj Interfejs na ruskom jeziku(kod mene je bilo "22"). U svim ostalim pitanjima, samo pritisnite Enter i kao rezultat ćemo doći do virtualne radne površine Debian OS-a s GPartedom:

Ako ste odabrali ruski interfejs, nećete imati problema sa radom u programu čak i ako odlučite da ponovo particionirate disk sa instaliran sistem. Algoritam akcija je sljedeći:

  1. Odaberite postojeću particiju koju želite podijeliti i kliknite na dugme "Promijeni veličinu ili premjesti" ili sličan predmet u kontekstualnom meniju.
  2. U prozoru koji se otvori, pomoću klizača ili prozora za unos brojeva, postavite novu veličinu particije i njen pomak od početka ili kraja diska (zapamtite da je bolje postaviti korijen i zamijeniti bliže početku) .
  3. Odaberite novokreirano nedodijeljeno područje i kliknite na dugme "Novo" na traci sa alatkama ili u kontekstualnom meniju.
  4. U prozoru koji se otvori postavite tip sistema datoteka, oznaku volumena i druge parametre.
  5. Gore navedene korake ponavljamo onoliko puta koliko je potrebno, nakon čega primjenjujemo sve promjene i čekamo da se završe.

Sada je malo toga ostalo. Instalirajte sistem u korijenski direktorij (ako još nije instaliran) i pokrenite ga. Sada su svi direktoriji na istoj particiji i moramo ih ponovo montirati na druga područja diska posebno kreirana za to. To se može učiniti gotovo u potpunosti u vizualnom načinu rada ili korištenjem terminala. Da bi bilo jasnije, razmotrimo proces prijenosa koristeći primjer /home/ direktorija u polu-vizuelnom modu.

Ako odlučite sve učiniti vizualno, onda otvorite npr. folder /mnt/ ili /media/ i u njemu napravite privremeni folder (nazovimo ga /newhome/) za prijenos podataka. Sada još uvijek moramo pokrenuti terminal kako bismo novostvorenu mapu montirali na particiju na koju želimo prenijeti /home/ folder. Ovo se radi naredbom poput:

Naravno, umjesto "ext4" odredit ćete svoj sistem datoteka, a umjesto "sda5" particiju na koju ćete prenijeti folder. Kada je particija montirana i fascikla je na njoj, otvorite je i kopirajte sav trenutni sadržaj /home/ direktorijuma tamo. Na kraju kopiranja, demontirajte particiju iz foldera sa sljedećom naredbom:

$sudo umount /mnt/newhome

Sad postojeći folder/home/ se može ili potpuno izbrisati (ili bolje, preimenovati, na primjer, u /oldhome/) i ponovo kreirati, ili jednostavno potpuno obrisati. Glavna stvar je da imamo prazan /home/ direktorij. Sada ćemo montirati našu particiju sa kopiranim podacima ovdje:

$sudo mount /dev/sda5 /home

Ako je sve prošlo kako treba, svi fajlovi koje smo kopirali će se pojaviti u /home/ direktorijumu. To jest, u stvari, transfer je uspješno obavljen. Ostaje samo konsolidirati uspjeh i osigurati da ne moramo ručno montirati naš direktorij svaki put kada se sistem pokrene. Da bismo to uradili, koristićemo uređivanje fstab datoteke (skraćeno od engleskog "tabela sistema datoteka" - "tabela sistema datoteka"), koja se nalazi u direktorijumu /etc/. Hajde da ga otvorimo bilo kojim uređivač teksta i na samom kraju dodajte ovaj red:

/dev/sda5 /home ext4 nodev,nosuid 0 2

Čineći to, sistemu doslovno "kažemo" sljedeće: na /dev/sda5 particiji postoji /home/ direktorij formatiran u ext4 sistemu, u kojem ne možete kreirati direktorij sa konfiguracijom uređaja (/dev/), i operacije sa suid i sgid bitovima su takođe zabranjene, onemogućene backup a sistem datoteka se montira u drugom prolazu (korijenski sistem se uvijek montira u prvom prolazu).

Ponovo pokreni i raduj se :) Za prave štreberke, reći ću da se sve operacije (osim uređivanja fstab-a) mogu raditi direktno u konzoli sa otprilike sljedećim redoslijedom naredbi:

$sudo mkdir /mnt/newhome

$sudo mount -t ext4 /dev/sda5 /mnt/newhome

$find. -dubina -print0 | sudo cpio --null --sparse -pvd /mnt/newhome/

$sudo umount /mnt/newhome

$sudo mv /home /oldhome

$sudo mkdir /home

$sudo mount /dev/sda5 /home

sudo gedit /etc/fstab

nalazi

Razumijevanje strukture direktorija i primjena prve komande konzole daje korisniku početniku prilično dobru ideju o strukturi sistema i uči ga razmišljanju Linux kategorije. U praksi nema ništa posebno teško u označavanju i montiranju particija diska, ali ove radnje značajno povećavaju stabilnost OS-a, pa se preporučuje da se prije svega rade prilikom instaliranja novog sistema.

Ako potrošite malo vremena na optimizaciju vaše strukture direktorija, učinit će vaš Linux sigurnijim u smislu pohranjivanja informacija i uštedjeti vam mnogo živaca i truda u budućnosti!

P.S. Dozvoljava se slobodno kopiranje i citiranje ovog članka, pod uslovom da je otvoren aktivni link o izvoru i očuvanju autorstva Ruslana Tertyshnyja.

Osnovni koncepti

Operativni sistem Linux razvijen je u skladu sa zahtjevima međunarodnog standarda za UNIX-kompatibilne sisteme IEEE POSIX, pa bi bilo logično prvo ukratko razmotriti strukturu sistema datoteka UNIX OS.

Jedna od prednosti UNIX operativnog sistema je da je sistem zasnovan na mali broj intuitivni koncepti. Međutim, uprkos jednostavnosti ovih koncepata, morate se naviknuti na njih. Bez toga je nemoguće razumjeti suštinu UNIX operativnog sistema.

Korisnik

Od samog početka, UNIX je zamišljen kao interaktivni sistem. Drugim riječima, UNIX je dizajniran da terminalni rad. Da bi počela sa radom, osoba se mora "logirati" na sistem unošenjem imena svog naloga (ime naloga) i, eventualno, lozinke (lozinke) sa besplatnog terminala. Osoba koja je registrovana u sistemskim datotekama naloga, pa stoga ima ime naloga, naziva se registrovanim korisnikom sistema. Registraciju novih korisnika obično vrši administrator sistema. Korisnik ne može promijeniti ime svog naloga, ali može postaviti i/ili promijeniti svoju lozinku. Lozinke se pohranjuju u zaseban fajl u kodiranom obliku. Ne zaboravite lozinku, čak vam ni administrator neće pomoći da je ponovo pronađete!

Svi korisnici UNIX-a rade sa datotekama eksplicitno ili implicitno. Sistem datoteka UNIX OS ima strukturu stabla. Međučvorovi stabla su direktoriji sa vezama ka drugim direktorijumima ili datotekama, a listovi stabla odgovaraju datotekama ili praznim direktorijumima. Svaki registrovani korisnik je pridružen direktorijumu u sistemu datoteka koji se zove "početni" direktorijum korisnika. Kada je prijavljen, korisnik ima neograničen pristup svom matičnom direktoriju i svim direktorijima i datotekama koje se nalaze u njemu. Korisnik može kreirati, brisati i modificirati direktorije i datoteke sadržane u matičnom direktoriju. Pristup svim ostalim datotekama je potencijalno moguć, ali se može ograničiti ako korisnik nema dovoljne privilegije.

Sistem podataka

Koncept datoteke jedan je od najvažnijih za UNIX operativni sistem. Svi fajlovi kojima korisnici mogu da manipulišu nalaze se u sistemu datoteka, koji je stablo čiji međučvorovi odgovaraju direktorijumima, a čiji listovi odgovaraju datotekama i praznim direktorijumima. Primjer strukture UNIX sistema datoteka prikazan je na slici 2.1. Zaista na svima logički pogon(odjeljak fizičkog disk paket) je posebna hijerarhija direktorija i datoteka. Da bi se dobilo zajedničko stablo u dinamici, koristi se "montaža" pojedinačnih hijerarhija na fiksni korijenski sistem datoteka.

komentar: U svijetu UNIX operativnog sistema, iz istorijskih razloga, termin "sistem datoteka" je preopterećen, označavajući i hijerarhiju direktorija i datoteka i dio kernela koji upravlja direktorijima i datotekama. Očigledno bi bilo ispravnije hijerarhiju direktorija i datoteka nazvati arhivom datoteka, a termin "sistem datoteka" koristiti samo u drugom smislu. Međutim, slijedeći tradiciju UNIX operativnog sistema, ovaj termin ćemo koristiti u dva značenja, razlikujući značenja po kontekstu.

Svaki direktorij i datoteka u sistemu datoteka ima jedinstvenu puno ime(na UNIX-u se ovo ime obično naziva full pathname - ime koje specificira punu putanju, budući da stvarno specificira punu putanju od korijena sistema datoteka kroz lanac direktorija do odgovarajućeg direktorija ili datoteke; ja ću koristiti termin "puno ime", jer ne postoji eufoničan ruski ekvivalent za ime putanje). Direktorij koji je korijen sistema datoteka (root direktorij) u bilo kojem sistemu datoteka ima unaprijed definirano ime "/" (kosa crta). Potpuno kvalificirano ime datoteke kao što je /bin/sh znači da korijenski direktorij treba sadržavati ime bin direktorija, a bin direktorij treba sadržavati sh ime datoteke. Kratko ili relativno ime datoteke (relativno ime putanje) je ime (moguće složeno) koje specificira putanju do datoteke iz trenutnog radnog direktorija (postoji naredba i odgovarajući sistemski poziv koji vam omogućava da postavite trenutni radni direktorij).

Svaki direktorij sadrži dva posebna imena, ime ".", koje imenuje sam direktorij, i ime "..", koje imenuje "roditeljski" direktorij direktorija, tj. direktorij koji neposredno prethodi datom u hijerarhiji direktorija.

Rice. 2.1. Struktura direktorija sistema datoteka

UNIX podržava brojne uslužne programe koji vam omogućavaju rad sa sistemom datoteka i dostupni su kao komande ljuske. Evo nekih od njih (najčešćih):

Struktura sistema datoteka

Sistem datoteka se obično nalazi na diskovima ili drugim uređajima eksternu memoriju ima blok strukturu. Osim blokova koji spremaju direktorije i datoteke, još nekoliko servisnih područja je podržano u vanjskoj memoriji.

U UNIX svijetu postoji nekoliko različitih vrsta sistema datoteka s vlastitom vanjskom strukturom memorije. Najpoznatija tradicionalna datoteka UNIX sistem Sistem V (s5) i sistem datoteka UNIX BSD porodice (ufs). Sistem datoteka s5 sastoji se od četiri sekcije (slika 2.2,a). U sistemu datoteka ufs, logički disk (particija stvarnog diska) sadrži niz sekcija sistema datoteka (slika 2.2,b).

Rice. 2.2. Struktura vanjske memorije s5 i ufs sistema datoteka

Hajde da ukratko opišemo suštinu i svrhu svakog područja diska.

    Blok pokretanja sadrži spinup program koji se koristi za inicijalno pokretanje UNIX operativnog sistema. U s5 sistemima datoteka, zapravo se koristi samo boot blok korijenskog sistema datoteka. U sekundarnim sistemima datoteka, ovo područje je prisutno, ali se ne koristi.

    Superblok je najvažnija oblast sistema datoteka, koja sadrži informacije koje su neophodne za rad sa sistemom datoteka kao celinom. Superblok sadrži listu slobodnih blokova i slobodnih i-čvorova (informacionih čvorova). U ufs sistemima datoteka, održava se više kopija superbloka kako bi se poboljšala otpornost (kao što je prikazano na slici 2.2b, jedna kopija po grupi cilindara). Svaka kopija superbloka je veličine 8196 bajtova, a samo jedna kopija superbloka se koristi prilikom montiranja sistema datoteka (pogledajte ispod). Međutim, ako montiranje utvrdi da je primarna kopija superbloka oštećena ili da ne ispunjava kriterije integriteta informacija, koristi se rezervna kopija.

    Blok grupe cilindara sadrži broj i-čvorova navedenih u listi i-čvorova za tu grupu cilindara i broj blokova podataka koji su pridruženi tim i-čvorovima. Veličina bloka grupe cilindara zavisi od veličine sistema datoteka. Da bi poboljšao efikasnost, sistem datoteka ufs pokušava smjestiti i-čvorove i blokove podataka u istu grupu cilindara.

    Lista i-čvorova (ilist) sadrži listu i-čvorova koji odgovaraju datotekama datog sistema datoteka. Maksimalni broj datoteke koje se mogu kreirati u sistemu datoteka određen je brojem dostupnih i-čvorova. I-čvor pohranjuje informacije koje opisuju datoteku: načini pristupa datoteci, vrijeme kreiranja i posljednje izmjene, korisnički ID i ID grupe kreatora datoteke, opis strukture bloka datoteke itd.

    Blokovi podataka - ovaj dio sistema datoteka pohranjuje stvarne podatke datoteka. U slučaju ufs sistema datoteka, svi blokovi podataka jedne datoteke pokušavaju da se uklope u istu grupu cilindara. Veličina bloka podataka se određuje kada je sistem datoteka formatiran naredbom mkfs i može se postaviti na 512, 1024, 2048, 4096 ili 8192 bajta.

Sistemi datoteka koji se mogu montirati

Datoteke bilo kojeg sistema datoteka postaju dostupne tek nakon što se taj sistem datoteka "montira". Datoteke na "nemontiranom" sistemu datoteka nisu vidljive operativnom sistemu.

Sistemski poziv montiranja se koristi za montiranje sistema datoteka. Montiranje sistema datoteka znači sljedeće. Stablo direktorija i fajlova dostupnih u trenutku montiranja mora imati granični čvor - prazan direktorij (u UNIX terminologiji, takav direktorij koji se koristi za montiranje sistema datoteka naziva se točka montaže direktorija - tačka montiranja). Svaki sistem datoteka ima korijenski direktorij. Tokom izvršavanja poziva sistema montiranja, korijenski direktorij sistema datoteka koji se montira se kombinuje sa direktorijumom - tačkom montiranja, što rezultira novom hijerarhijom sa punim imenima direktorijuma i fajlova.

Montirani sistem datoteka može se kasnije odvojiti od dijeljene hijerarhije korištenjem umount sistemskog poziva. Uspješno izvršenje ovog sistemskog poziva zahtijeva da sistem datoteka koji se odvaja nije trenutno u upotrebi (to jest, nijedna datoteka iz ovog sistema datoteka nije otvorena). Korijenski sistem datoteka je uvijek montiran i ne podliježe sistemskom pozivu umount.

Kao što sam gore napomenuo, poseban sistem datoteka se obično nalazi na logičkom disku, tj. na particiji fizičkog diska. Nisu podržani posebni sistemski pozivi za inicijalizaciju sistema datoteka. Novi sistem datoteka se formira na formatiranom disku pomoću mkfs uslužnog programa (naredbe). Novokreirani sistem datoteka je inicijaliziran u stanje da ima samo jedan prazan korijenski direktorij. Komanda mkfs vrši inicijalizaciju direktnim upisivanjem odgovarajućih podataka na disk.

Interfejs sistema datoteka

UNIX kernel podržava nekoliko sistemskih poziva za rad sa datotekama. Među njima, najvažniji su otvaranje, kreiranje, čitanje, pisanje, traženje i zatvaranje.

Važno je napomenuti da iako je unutar podsistema za upravljanje datotekama obična datoteka predstavljena kao skup eksternih memorijskih blokova, korisnicima je omogućeno da je datoteka predstavljena kao linearni niz bajtova. Ovaj prikaz vam omogućava da koristite apstrakciju datoteke kada radite u eksternih uređaja, prilikom organizovanja međuprocesnih interakcija itd.

Datoteka u sistemskim pozivima koji pružaju stvarni pristup podacima identificirana je po svom deskriptoru (cijelobrojna vrijednost). Deskriptor fajla se izdaje sistemskim pozivima open (otvori fajl) i kreiraj (kreiraj fajl). Glavni parametar operacija otvaranja i kreiranja datoteke je puno ili relativno ime datoteke. Osim toga, prilikom otvaranja datoteke, naznačen je i način otvaranja (samo čitanje, samo pisanje, pisanje i čitanje itd.) i karakteristika koja određuje mogućnosti pristupa datoteci:

open(naziv putanje, oflag [,mode])

Jedna od zastavica koja može učestvovati u parametru oflag je oznaka O_CREAT, čije prisustvo ukazuje na potrebu kreiranja datoteke ako se, kada se izvrši otvoreni sistemski poziv, datoteka sa dato ime ne postoji (parametar mode ima značenje samo ako je ova zastavica prisutna). Međutim, iz istorijskih razloga i kako bi se osigurala kompatibilnost sa prethodne verzije UNIX OS posebno podržava kreirani sistemski poziv, koji obavlja gotovo iste funkcije.

Otvorena datoteka se može koristiti za čitanje i pisanje nizova bajtova. Za ovo su podržana dva sistemska poziva:

čitanje (fd, bafer, brojanje) i pisanje (fd, bafer, brojanje)

Ovdje je fd deskriptor datoteke (dobijen iz ranijeg otvorenog ili kreiranog sistemskog poziva), bafer je pokazivač niza znakova, a count je broj bajtova koji se čitaju ili upisuju u datoteku. Vrijednost funkcije čitanja ili pisanja je cijeli broj koji je jednak vrijednosti count ako operacija uspije, nula ako se dostigne kraj datoteke i negativan ako dođe do greške.

Svaki otvoreni fajl ima trenutnu poziciju. Odmah nakon otvaranja datoteka se postavlja na prvi bajt. Drugim riječima, ako se sistemski poziv za čitanje (ili pisanje) izvrši odmah nakon otvaranja datoteke, tada će se prvi broj bajtova sadržaja datoteke pročitati (ili upisati) (naravno, oni će biti uspješno pročitani samo ako datoteka zapravo sadrži najmanje broj bajtova). ). Nakon što se sistemski poziv za čitanje (ili pisanje) izvrši, pokazivač čitanja/pisanja datoteke će biti postavljen na count+1, i tako dalje.

Takav čisto sekvencijalni stil rada se u mnogim slučajevima pokazuje dovoljnim, ali je često potrebno čitati ili modificirati datoteku sa proizvoljne pozicije (na primjer, kako možete pohraniti direktno indeksirane nizove podataka u datoteku bez takve prilika?). Da eksplicitno pozicionirate datoteku, koristite sistemski poziv

lseek(fd, offset, origin)

Kao i prije, ovdje je fd deskriptor datoteke prethodno otvorenog fajla. Parametar offset specificira relativni pomak pokazivača čitanja/pisanja, a parametar porijekla specificira s koje pozicije treba primijeniti pomak. Postoje tri moguće vrijednosti za parametar porijekla. Vrijednost 0 označava da vrijednost pomaka treba tretirati kao pomak od početka datoteke. Vrijednost 1 znači da je vrijednost pomaka pomak od trenutne pozicije datoteke. Konačno, vrijednost 2 označava da je pomak relativan u odnosu na kraj datoteke. Imajte na umu da je tip podataka parametra offset long int. To znači da se, prvo, mogu specificirati dovoljno dugi pomaci i, drugo, pomaci mogu biti pozitivni i negativni.

Na primjer, nakon izvršenja sistemskog poziva

pokazivač čitanja/pisanja odgovarajuće datoteke će biti postavljen na početak (prvi bajt) datoteke. Sistemski poziv

UNIX standardni sistem datoteka ... naredbe. Slika 1.2. Struktura OS direktoriji linux glavni imenik fajl sistemi OS linux je korijenski direktorij...

  • Instalacija operacione sale sistemi linux

    Sažetak >> Informatika

    Snažne i fleksibilne metode upravljanja fajl sistemi linux ili linux-kao operativni sistemi. U mnogo... jedno drvo struktura imenike, i ovo struktura može obuhvatiti više sekcija. Kada fajl sistem montiran...

  • Top Related Articles