Izlaz u Linux datoteku. Kako sačuvati izlaz konzole u datoteku

Ako izlaz na (grafičkoj) konzoli nije jako velik, možete jednostavno odabrati dio mišem i zalijepiti ga u poruku klikom na srednje dugme. Inače, možete koristiti preusmjeravanje izlaza na datoteku kroz "lijevak", ovako:

Neki parametri naredbe > logfile.txt

Da biste vidjeli rezultat izvršenja na ekranu, a istovremeno pisali u datoteku, možete koristiti tee naredbu:

Neki parametri naredbe | tee -a logfile.txt

Setterm -dump komanda kreira snimak trenutnog bafera virtuelne konzole kao običan tekstualni fajl sa podrazumevanim imenom screen.dump. Možete koristiti broj konzole za koju želite da dump kao njen argument. A dodavanjem opcije -file filename će ovaj dump preusmjeriti na datoteku sa navedenim imenom. Opcija -append će dodati novi dump postojećoj datoteci - "default" screen.dump ili onom nazvanom opcijom -file.

One. nakon upotrebe komande like

Setterm -dump -file /root/screenlog

odnosno u fajlu /root/screenlog bit će sadržaj jedne konzolne stranice.

Našao sam drugo rješenje za kopiranje/lijepljenje teksta u tekstualnu konzolu bez miša. Također možete kopirati tekst iz bafera za pomicanje (tj. sve na ekranu i iznad ekrana). Za bolje razumijevanje, pročitajte o ekranu upravitelja prozora baziranog na konzoli. Također može biti korisno povećati veličinu bafera za pomicanje.

1) Pokreni ekran

2) Pritisnite Enter. Sve. Nalazimo se u nultom prozoru konzole.

3) Izvršavamo potrebne komande, čiji se izlaz mora kopirati.

4) Ctrl+A, Ctrl+[ - nalazimo se u načinu kopiranja. Stavimo kursor na početak selekcije, pritisnemo razmaknicu, zatim stavimo kursor na kraj selekcije, pritisnemo razmaknicu. Tekst je kopiran u međuspremnik.

5) Ctrl+A, c - napravili smo novi 1. prozor.

6) Ctrl+A, 1 - prešli smo na 1. prozor.

7) Otvorite bilo koji (?) uređivač teksta (probao sam u mc-u) i pritisnite Ctrl + A, Ctrl +] - tekst je umetnut. Mi štedimo.

8) Ctrl+A, Ctrl+0 - vratite se na nulti prozor.

Kako povećati bafer za pomicanje?

Prvo rješenje je povećati zadanu (podrazumevanu) veličinu bafera u izvorima kernela i ponovo je kompajlirati. Dozvolite mi da pretpostavim da i vi nerado radite ovo kao i ja i tražite fleksibilniji medij.

I postoji takav alat, ali se zove framebuffer console, skraćeno fbcon. Ovaj uređaj ima dokumentaciju fbcon.txt; ako ste instalirali dokumentaciju za kernel, onda je imate. Potražite ga negdje u blizini /usr/share grane (ne mogu dati tačnu putanju zbog razlika u distribucijama).

U ovom trenutku, izvinjavam se: moramo malo skrenuti pažnju i razgovarati malo o video baferu ( framebuffer ).

Video bafer je bafer između ekrana i video adaptera. Njegova lepota je u tome što se njime može manipulisati: dozvoljava trikove koji ne bi radili da je adapter povezan direktno na ekran.

Jedan takav trik je povezan sa baferom za pomeranje; ispostavilo se da možete "zamoliti" video bafer da dodijeli više memorije baferu za pomicanje. Ovo se postiže kroz parametre pokretanja kernela. Prvo trebate framebuffer(video bafer); Zatim tražite veći bafer za pomicanje.

Sljedeći primjer je za GRUB, ali se lako može prilagoditi LILO-u. U GRUB konfiguracijskoj datoteci - menu.lst- pronađite liniju koja odgovara kernelu, a zatim: Uklonite opciju vga=xxx, ako postoji. Dodajte opciju video=vesabf ili bilo šta što odgovara vašem hardveru. Dodajte opciju fbcon=scrollback:128 . Nakon ove procedure, linija parametara kernela bi trebala izgledati otprilike ovako:

Kernel /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128

Pitanje je zašto ukloniti opciju vga=xxx? Zbog mogućih sukoba sa video opcijom. Na mom ATI adapteru, ne mogu promijeniti bafer za pomicanje ako je naveden vga=xxx. Možda u vašem slučaju to nije slučaj. Ako gore navedene opcije rade - dobro; ali šta ako želite povećati broj redova ili postaviti manji font na ekranu? Uvek ste to radili sa opcijom vga=xxx, i to je ono što je nestalo. Ne brinite - isto se može postići promjenom fbcon parametara kako je opisano u datoteci fbcon.txt(ali nije opisano u ovom članku).

Sa opcijom fbcon=scrollback:128, moj bafer za pomicanje se povećao na 17 ekrana (35 puta Shift+PgUp pola ekrana). Usput, 128 je kilobajt. Autor članka tvrdi da se više ne može utvrditi. Nisam pokušao.

Možete koristiti skriptu.

Ime datoteke skripte.log

kada se izvrše sve potrebne komande -

Sve je zapisano u filename.log

FreeBSD ima divan uslužni program za sat koji vam omogućava da nadgledate terminale, ali kako se ispostavilo, u Linuxu obavlja potpuno različite funkcije =\ Vrijedi proguglati ovu temu, postoji nešto ...

Kada radite u terminalu, prirodno vidite sve izlazne komande u realnom vremenu pravo u prozoru terminala. Ali postoje slučajevi kada izlaz treba sačuvati da bi se kasnije mogao raditi s njim (analizirati ga, uporediti, itd.). Dakle, radeći u Bashu, imate mogućnost da preusmjerite prikazane informacije iz prozora terminala u tekstualnu datoteku. Da vidimo kako se to radi.

Opcija 1: samo preusmjerite izlaz terminala na datoteku

U ovom slučaju, cijeli rezultat rada bilo koje naredbe bit će zapisan u tekstualnu datoteku, bez prikazivanja na ekranu. To jest, bukvalno ćemo preusmjeriti informacije sa ekrana u datoteku. Da biste to učinili, morate koristiti operatore > I >> i putanju do datoteke u koju se piše, na kraju naredbe koja se izvršava.

Operater > sprema rezultat naredbe u navedenu datoteku i, ako već sadrži bilo koju informaciju, prepisuje je.

Operater >> će preusmjeriti izlaz naredbe u datoteku, a ako i ona sadrži informacije, novi podaci će biti dodati na kraj datoteke.

Pogledajmo primjer naredbe ls , koji prikazuje listu datoteka i mapa u navedenom direktoriju. Zapišimo rezultat njenog rada u tekstualnu datoteku. Moramo napisati naredbu, staviti operator i odrediti putanju do datoteke:

Ls > /home/ruslan/example

Sada da vidimo da li je sve funkcionisalo. Da biste to učinili, možete koristiti bilo koji uređivač teksta koji imate. To također možete učiniti direktno u terminalu pomoću naredbe cat:

Cat /home/ruslan/example

Sve radi.

Zapamtite da " > " će prepisati sve podatke koji su prethodno bili u datoteci, pa ako trebate nešto dodati u datoteku, koristite operator " >> «

Recimo da nakon što smo preusmjerili izlaz naredbe ls zapisati " primjer » odlučili smo da saznamo verziju kernela sistema i takođe sačuvamo izlaz u istu datoteku. Da biste saznali verziju kernela, koristite naredbu uname i parametar -a , zatim kažemo Bashu kako i gdje da sačuva rezultat njegovog izvršenja:

Uname -a >> /home/ruslan/example

Provjerimo još jednom rezultat:

Cat /home/ruslan/example

Kao što vidite, sačuvali smo rezultate rada i ls , And uname .

Opcija 2: preusmjeravanje izlaza u datoteku i njegovo prikazivanje na ekranu

Nisu svi i nisu uvijek pogodni za korištenje operateri > I >> , jer je ipak bolje kada se nalet komandi može posmatrati u realnom vremenu u prozoru terminala. U ovom slučaju možemo koristiti naredbu tee , koji će prikazati izvršenje komandi na ekranu i sačuvati ga u datoteku. Njegova sintaksa je ova:

Tim | tee /putanja/do/datoteke

Ova opcija je slična operatoru > iz prethodnog stava, odnosno prilikom upisivanja u fajl, svi stari podaci će biti obrisani. Ako trebate dodati datoteku, trebate dodati parametar u konstrukciju -a :

Tim | tee -a /put/do/datoteke

Jedna od najzanimljivijih i najkorisnijih tema za sistemske administratore i nove korisnike koji tek počinju razumjeti rad s terminalom je Linux I/O preusmjeravanje. Ova funkcija terminala vam omogućava da preusmjerite izlaz komande u datoteku, ili sadržaj datoteke na unos komandi, spojite komande zajedno i formirate komandne cjevovode.

U ovom članku ćemo pogledati kako funkcionira Linux I/O preusmjeravanje, koji se operatori za to koriste i gdje se sve to može primijeniti.

Sve naredbe koje izvršavamo vraćaju nam tri vrste podataka:

  • Rezultat izvršavanja naredbe, obično tekstualni podaci koje korisnik traži;
  • Poruke o greškama - obavještavaju o procesu izvršenja komande i nastalim nepredviđenim okolnostima;
  • Povratni kod je broj koji vam omogućava da procenite da li je program ispravno radio.

U Linuxu se sve supstance smatraju datotekama, uključujući linux I/O streamove - datoteke. Svaka distribucija ima tri datoteke glavnog toka koje programi mogu koristiti, definirane su ljuskom i identificirane brojem deskriptora datoteke:

  • STDIN ili 0- ovaj fajl je povezan sa tastaturom i većina komandi dobija svoje podatke da rade odavde;
  • STDOUT ili 1- ovo je standardni izlaz, ovdje program šalje sve rezultate svog rada. Povezuje se sa ekranom, tačnije, sa terminalom u kojem se program izvršava;
  • STDERR ili 2- sve poruke o grešci izlaze u ovu datoteku.

I/O preusmjeravanje vam omogućava da zamijenite jedan od ovih fajlova svojim. Na primjer, možete natjerati program da čita podatke iz fajla na sistemu datoteka umjesto s tastature, također možete pisati greške u datoteku umjesto na ekranu itd. Sve se to radi pomoću simbola "<" I ">" .

Preusmjerite izlaz u datoteku

Sve je vrlo jednostavno. Možete preusmjeriti izlaz na datoteku pomoću simbola >. Na primjer, pohranimo izlaz naredbe top:

top -bn 5 > top.log

Opcija -b uzrokuje pokretanje programa u neinteraktivnom batch modu, a opcija n ponavlja operaciju pet puta kako bi dobila informacije o svim procesima. Sada da vidimo šta se dešava sa mačkom:

Simbol ">" prepisuje informacije iz datoteke ako već postoji nešto tamo. Za dodavanje podataka na kraj, koristite ">>" . Na primjer, preusmjerite izlaz na linux datoteku za vrh:

top -bn 5 >> top.log

Zadana postavka za preusmjeravanje je korištenje standardnog deskriptora izlazne datoteke. Ali možete to eksplicitno specificirati. Ova komanda će dati isti rezultat:

top -bn 5 1>top.log

Preusmjerite greške u datoteku

Da biste preusmjerili izlaz greške u datoteku, morate eksplicitno navesti deskriptor datoteke koji želite preusmjeriti. Za greške, ovo je broj 2. Na primjer, kada pokušavate pristupiti korijenskom direktoriju, ls će baciti grešku:

Standardnu ​​grešku možete preusmjeriti na ovaj fajl:

ls -l /root/ 2> ls-error.log
$ cat ls-error.log

Za dodavanje podataka na kraj datoteke koristite isti simbol:

ls -l /root/ 2>>ls-error.log

Preusmjerite standardni izlaz i greške u datoteku

Također možete preusmjeriti sav izlaz, greške i standardni izlaz u jednu datoteku. Postoje dva načina da to uradite. Prvi, stariji, treba proći oba deskriptora:

ls -l /root/ >ls-error.log 2>&1

Prvo, izlaz naredbe ls će biti poslan u datoteku ls-error.log koristeći prvi znak za preusmjeravanje. Dalje će sve greške biti poslane u istu datoteku. Druga metoda je lakša:

ls -l /root/ &> ls-error.log

Također možete koristiti append umjesto prepisivanja:

ls -l /root/ &>> ls-error.log

standardni unos iz datoteke

Većina programa, osim servisa, prima podatke za svoj rad putem standardnog unosa. Standardno podrazumevano, standardni unos očekuje unos sa tastature. Ali možete natjerati program da čita podatke iz datoteke s naredbom "<" :

mačka

Također možete odmah preusmjeriti izlaz u datoteku. Na primjer, promijenimo redoslijed liste:

sortiraj sortiraj izlaz

Dakle, mi preusmjeravamo ulazni izlaz linuxa u jednoj naredbi.

Korišćenje tunela

Možete raditi ne samo sa datotekama, već i preusmjeriti izlaz jedne komande kao ulaz na drugu. Ovo je vrlo korisno za složene operacije. Na primjer, odštampajmo pet nedavno izmijenjenih datoteka:

ls -lt | glava -n 5

Pomoću uslužnog programa xargs možete kombinovati komande tako da se standardni unos prosleđuje kao parametri. Na primjer, kopirajmo jednu datoteku u nekoliko foldera:

echo test/tmp/ | xargs -n 1 cp -v testfile.sh

Ovdje, -n 1 opcija specificira da samo jedan parametar treba biti zamijenjen za jednu naredbu, a -v opcija u cp vam omogućava da ispišete detaljne informacije o kretanjima. Još jedna naredba koja je korisna u takvim slučajevima je tee. Čita podatke sa standardnog ulaza i upisuje u standardni izlaz ili datoteke. Na primjer:

echo "Tee test" | tee file1

U kombinaciji s drugim naredbama, sve se to može koristiti za kreiranje složenih instrukcija iz nekoliko naredbi.

zaključci

U ovom članku pokrili smo osnove Linux I/O preusmjeravanja toka. Sada znate kako da preusmjerite izlaz na linux datoteku ili izlaz iz datoteke. Vrlo je jednostavan i zgodan. Ako imate pitanja, pitajte u komentarima!

Dok je normalno, kao što je spomenuto, programski I/O vezan za standardne tokove, postoje posebni objekti u ljusci za preusmjeravanje I/O.

5.5.1 Operateri >,< и >>

Simboli " se koriste za označavanje preusmjeravanja. > ", "< " i " >> ". Najčešća upotreba je preusmjeravanje izlaza naredbe u datoteku. Evo relevantnog primjera:

$ ls -l > /home/jim/dir.txt

Ova komanda će sačuvati listu datoteka i poddirektorijuma direktorijuma koji je bio aktuelan u vreme izvršenja naredbe u datoteci /home/jim/dir.txt ls; u isto vrijeme, ako navedena datoteka ne postoji, bit će kreirana; ako je postojao, biće prepisan; ako želite da se izlaz naredbe doda na kraj postojeće datoteke, onda umjesto simbola > koristiti >> . U ovom slučaju, prisutnost razmaka prije ili poslije znakova > ili >> je nebitan i služi samo za praktičnost korisnika.

Izlaz možete usmjeriti ne samo na datoteku, već i na ulaz druge komande ili na uređaj (kao što je pisač). Na primjer, da prebrojite broj riječi u datoteci /home/jim/report.txt, možete koristiti sljedeću naredbu:

$ cat /home/jim/report.txt > wc -w

i za štampanje fajla - naredba:

$ cat /home/jim/report.txt > lpr

Kao što vidite, operater > služi za preusmjeravanje izlaznog toka. U odnosu na ulazni tok, sličnu funkciju obavlja operator < . Gornji primjer naredbe za brojanje broja riječi u određenoj datoteci može se prepisati na sljedeći način (obratite pažnju na odsustvo naredbe mačka):

$ wc -w< /home/jim/report.txt

Ovaj tip preusmjeravanja se često koristi u raznim skriptama za komande koje normalno prihvataju (ili očekuju unos od) tastature. U skripti koja automatizuje neke rutinske operacije, naredbi možete dati potrebne informacije iz datoteke koja sadrži ono što trebate unijeti da biste izvršili ovu naredbu.

Jer simboli < , > I >> djeluju na standardnim streamovima, mogu se koristiti ne samo na uobičajeni način, kao što se obično radi, već i na malo drugačiji način. Dakle, sljedeće naredbe su ekvivalentne:

$ cat > fajl

$cat>file

$ >file kat

$ > fajl kat

Međutim, sam po sebi (bez ikakve naredbe za koju su definirani standardni tokovi) znak za preusmjeravanje se ne može koristiti, tako da ne možete, na primjer, kucanjem u komandnoj liniji

$ file1 > file2

dobiti kopiju nekog fajla. Ali to ne umanjuje vrijednost ovog mehanizma, jer su standardni tokovi definirani za bilo koju komandu. U ovom slučaju, možete preusmjeriti ne samo standardni ulaz i izlaz, već i druge tokove. Da biste to učinili, morate navesti broj toka koji će biti preusmjeren prije simbola za preusmjeravanje. Standardni ulazni stdin je broj 0, standardni izlazni stdout je broj 1, standardni tok poruka o grešci stderr je broj 2. To jest, puni format naredbe za preusmjeravanje je (sjetite se da razmaci pored > nisu potrebni):

komanda N > M

Gdje N I M— brojevi standardnih tokova (0,1,2) ili imena datoteka. Upotreba simbola u nekim slučajevima < , > I >> bez navođenja broja kanala ili naziva datoteke moguće je samo zato što se umjesto broja koji nedostaje, po defaultu zamjenjuje 1, tj. standardni izlaz. Da, operater > bez broja se tumači kao 1 > .

Pored jednostavnog preusmjeravanja standardnih tokova, postoji i mogućnost ne samo da se stream preusmjeri na jedan ili drugi kanal, već da se napravi kopija sadržaja standardnog toka. Za ovo postoji poseban karakter. & , koji se postavlja ispred broja kanala na koji je stream preusmjeren:

naredba N > &M

Ova komanda znači da je izlaz kanala sa brojem Nšalje se i na standardni izlaz i duplira se u cijevi s brojem M. Na primjer, da bi se poruke o grešci duplicirale na standardnom izlazu, morate izdati naredbu 2>&1, dok 1>&2 duplira stdout u stderr. Ova funkcija je posebno korisna kada preusmjeravamo izlaz u datoteku, jer tada oboje vidimo poruke na ekranu i spremamo ih u datoteku.

5.5.2 Operater |

Posebna varijanta preusmjeravanja izlaza je organizacija programskog kanala (ponekad se naziva cjevovod ili cjevovod). Da biste to učinili, dvije ili više komandi, tako da izlaz prethodne služi kao ulaz za narednu, povezuju se (ili razdvoje, ako vam se to više sviđa) sa cijevnim znakom - "|". U ovom slučaju, standardni izlazni tok naredbe nalazi se lijevo od simbola | , usmjeren je na standardni ulaz programa koji se nalazi desno od znaka | . Na primjer:

$ cat myfile | grep Linux | wc -l

Ova linija znači da je izlaz naredbe mačka, tj. tekst iz datoteke myfile, biće usmjeren na unos naredbe grep, koji će odabrati samo redove koji sadrže riječ "Linux". izlaz komande grepće zauzvrat biti preusmjeren na ulaz naredbe wc -l, koji će brojati broj takvih redova.

Programske cijevi se koriste za kombiniranje nekoliko malih programa, od kojih svaki izvodi samo određene transformacije na svom ulaznom toku, kako bi se stvorila generalizirana naredba, koja će rezultirati nekom složenijom transformacijom.

Treba napomenuti da ljuska istovremeno poziva sve naredbe uključene u cjevovod, pokrećući zasebnu instancu ljuske za svaku od naredbi, tako da čim prvi program počne nešto izdavati svom izlaznom toku, sljedeća naredba počinje da ga obrađuje. Na isti način svaka naredna komanda obavlja svoju operaciju, čekajući podatke iz prethodne naredbe i dajući njene rezultate kao ulaz sljedećoj. Ako želite da se jedna naredba u potpunosti završi prije nego što se sljedeća počne izvršavati, možete je koristiti u istoj liniji kao simbol cijevi | , i tačku i zarez ; . Prije svake točke-zareze, ljuska će se zaustaviti i čekati dok se sve prethodne naredbe uključene u cjevovod ne završe s izvršavanjem.

Izlazni status (boolean vraćen kada se program završi) iz cijevi je isti kao i izlazni status koji je vratila posljednja naredba u cjevovodu. Prije prve naredbe cjevovoda možete staviti simbol "!", tada će izlazni status iz cjevovoda biti logička negacija izlaznog statusa iz posljednje naredbe. Shell čeka da se sve naredbe cjevovoda dovrše prije postavljanja povratne vrijednosti.

5.5.3 Filteri

Posljednji od gornjih primjera (sa naredbom grep) može se koristiti za ilustraciju drugog važnog koncepta, odnosno programa za filtriranje. Filteri su komande (ili programi) koje prihvataju ulazni tok podataka, izvode neke transformacije na njemu i izlaze rezultat na standardni izlaz (odakle se može preusmjeriti negdje drugdje na zahtjev korisnika). Naredbe filtera uključuju naredbe koje su već spomenute gore. mačka, više, manje, wc, cmp, dif, kao i sledeće komande.

Tabela 5.1. Filter Commands

Tim

Kratki opis

grep, fgrep, egrep

Potražite u ulaznoj datoteci ili standardnom ulazu linije koje sadrže navedeni uzorak i zapišite ih u standardni izlaz

Zamjenjuje u ulaznom toku sva pojavljivanja znakova navedenih na navedenoj listi odgovarajućim znakovima iz druge specificirane liste

comm

Uspoređuje dvije datoteke red po red i ispisuje 3 stupca u stdout: jedan sadrži redove koji se pojavljuju samo u 1 datoteci, drugi sadrži redove koji se pojavljuju samo u 2. datoteci: a treći sadrži redove koji se pojavljuju u obje datoteke

Formatira tekstualnu datoteku ili sadržaj standardnog unosa za štampanje.

sed

Editor linija koji se koristi za izvođenje nekih transformacija na ulaznom toku podataka (preuzeto iz datoteke ili standardnog unosa)

Specijalni filter je komanda tee, koji "udvostručuje" ulazni tok, s jedne strane ga usmjerava na standardni izlaz, as druge - na datoteku (čije ime morate navesti). Lako je vidjeti da je u svom djelovanju komanda tee slično kao i operator preusmjeravanja 1>&datoteka.

Mogućnosti filtera mogu se značajno proširiti upotrebom regularnih izraza, koji omogućavaju organizovanje, na primjer, pretraživanja koristeći različite, često vrlo složene, obrasce.

Mnogo bi se moglo reći o preusmjeravanju i filterima. Ali ovaj materijal se nalazi u većini UNIX i Linux knjiga, kao što su Petersen [A1.4] i Kelly-Bootle [A1.8]. Stoga se ograničavamo na ono što je rečeno i prelazimo na razmatranje takozvanog okruženja ili okruženja koje stvara ljuska.

V. Kostromin (kos i rus-linux dot net) - 5.5. I/O preusmjeravanje, kanali i filteri

I/O sistem u LINUX-u.

U I/O sistemu, svi vanjski uređaji se tretiraju kao datoteke na kojima su dozvoljene normalne operacije s datotekama. Naravno, postoje i drajveri uređaja, ali sučelje s njima je dizajnirano za korisnika kao poziv posebnoj datoteci. Specijalni fajlovi su sredstvo za objedinjavanje I/O sistema.

Svaki povezani uređaj (terminal, diskovi, štampač, itd.) ima najmanje jednu posebnu datoteku koja je pridružena njemu. Većina ovih posebnih datoteka pohranjena je u /dev direktoriju:
$ cd /dev
$ ls -l
kontrolna tabla sistema na podlozi
dsk komadi na disku
fd0 disketa 1
mem memoriju
lp printer
lp0 paralelni port 0
. . .
korijenski dio na disku za korijenski sistem datoteka
zamijeniti zamjenski dio
alternativno ime syscon konzole
systty je drugo ime za sistemsku konzolu
imenik termina za terminale
ttyS0 serijski port 0 (COM1)
. . .

Kada program upiše u takvu posebnu datoteku, OS sistem ih presreće i šalje na uređaj, kao što je štampač). Kada čitate podatke iz ove vrste datoteke, oni se zapravo primaju sa uređaja kao što je disk. Program ne bi trebao uzeti u obzir posebnosti I/O uređaja. U tu svrhu služe posebni fajlovi (drajveri) koji deluju kao interfejs između komponenti jezgra OS-a i aplikativnih programa opšte namene.

Sistem detektuje razliku između obične datoteke i posebne datoteke tek nakon što raščlani odgovarajući inode na koji upućuje unos direktorija.
Inode posebne datoteke sadrži informacije o klasi uređaja, tipu i broju. Klasa uređaja definira i znak po znak i blok po blok uređaje. Primjer uređaja s razmjenom znakova po znak je tastatura. Posebne datoteke koje pružaju komunikaciju s uređajima ovog tipa nazivaju se bajt-orijentiranim. Blok uređaje karakteriše razmjena velikih blokova informacija, što ubrzava razmjenu i čini je efikasnijom. Svi disk uređaji podržavaju razmjenu blokova, a specijalne datoteke koje im služe nazivaju se blok-orijentiranim. Posebne datoteke ne sadrže nikakve informacije o znakovima, tako da njihova dužina nije navedena u listi direktorija.

Tip i broj uređaja su takođe glavne karakteristike posebnih datoteka (glavni i sporedni broj odgovarajućeg uređaja se stavljaju u polje za dužinu). Prvi od njih definira tip uređaja, drugi ga identificira među sličnim uređajima. OS može istovremeno opsluživati ​​nekoliko desetina, pa čak i stotina terminala. Svaki od njih mora imati svoju posebnu datoteku, tako da vam prisutnost velikog i manjeg broja omogućava da uspostavite potrebnu korespondenciju između uređaja i takve datoteke.

Možete kreirati više sistema datoteka na jednom disku. Neki sistemi koriste jedan sistem datoteka po disku, dok drugi koriste nekoliko. Novi sistem datoteka se može kreirati pomoću naredbe mkfs (napravi sistem datoteka). Na primjer, izraz # /sbin/mkfs /dev/dsk/fl1 512 znači: kreiraj na disketi b: 512 blokova veličine.

Opciono, možete postaviti veličinu datotečnog sistema u blokovima i broj i-čvorova (tj. maksimalan broj fajlova koji se mogu pohraniti u sistem datoteka). Prema zadanim postavkama, broj i-čvorova je jednak broju blokova podijeljenom sa četiri. Maksimalan broj i-čvorova u jednom sistemu datoteka je 65 000. Ako vam iz nekog razloga treba više od 65 000 i-čvorova na disku, morate kreirati dva ili više sistema datoteka na tom disku.

Bilo koji sistem datoteka može biti pripojen (montiran) na zajedničko stablo direktorija, u bilo kojoj tački u njemu. Na primjer, direktorij / je korijenski direktorij sistema, osim toga, on je osnova sistema datoteka, koji je uvijek montiran. Direktorij /usr1 nalazi se u direktoriju /, ali u ovom slučaju to je odvojen sistem datoteka od korijenskog sistema datoteka, jer se sve datoteke u njemu nalaze na posebnom dijelu diska, ili čak na zasebnom disku. Sistem datoteka /usr1 je montirani sistem datoteka - ukorijenjen na mjestu gdje direktorij /usr1 postoji u cjelokupnoj hijerarhiji (slike 1 i 2).

Rice. 1. Sistem datoteka prije
montiranje /dev/dsk/os1

Rice. 2. Sistem datoteka poslije
montiraj /dev/dsk/os1 kao /usr/

Naredba /sbin/mount se koristi za montiranje sistema datoteka. Ova komanda omogućava da se dati sistem datoteka postavi bilo gdje u postojećoj strukturi direktorija:
#/sbin/mount/dev/dsk/osl/usr1 montira /dev/dsk/osl na /usr1
#/sbin/mount/dev/dsk/flt/a montira /dev/dsk/flt na /a

Ako želite da montirate sistem datoteka na diskove koji moraju biti zaštićeni od pisanja da bi sistem bio samo za čitanje, morate dodati opciju -r naredbi /sbin/mount.
Direktorij na koji je prikačen montirani sistem datoteka mora biti trenutno prazan, jer njegov sadržaj neće biti dostupan dok se sistem datoteka montira.

Da biste dobili informacije o sistemima datoteka koji su montirani, na primjer, na LINUX sistemu, možete koristiti naredbu /sbin/mount bez argumenata (slika 3).

Rice. 3.

Ova komanda ispisuje direktorij na koji je sistem datoteka montiran (npr. usrl), /dev uređaj na kojem se nalazi, te sat i datum kada je montiran. Naredba /sbin/umount se koristi za demontažu sistema datoteka, što je suprotno od naredbe mount. Oslobađa datotečni sistem i na neki način ga vadi iz njegove cjelokupne strukture direktorija tako da su sve njegove datoteke i direktoriji nedostupni:
# /sbin/umount /b
# /sbin/umount /dev/dsk/0s2

Root sistem datoteka se ne može demontirati. Također, naredba umount neće uspjeti ako neko koristi datoteku iz sistema datoteka koji se demontira (ovo bi moglo biti čak i jednostavno kao da je korisnik u jednom od direktorija sistema datoteka koji se demontira).

U naredbama mount i umount, korisnik koristi skraćenicu fizičkog diska.
U LINUX-u, disk jedinice imaju posebne oznake. U LINUX-u, korisnik se nikada ne suočava s problemom preciznog specificiranja fizičkog uređaja na kojem se nalaze informacije. U LINUX-u proizvoljan broj eksternih uređaja može biti vrlo velik, tako da korisnik mora samo da se bavi imenom direktorija u kojem se nalaze datoteke koje su mu potrebne. Svi sistemi datoteka se montiraju jednom, obično pri pokretanju sistema. Datotečni sistemi se takođe mogu montirati na neke direktorijume sa udaljenih računara.

Za fizičke uređaje, LINUX ima direktorije dsk i rdsk, koji sadrže datoteke koje odgovaraju disk uređajima. Obično su imena datoteka u ovim direktorijima ista i jedina razlika između njih je u tome što rdsk direktorij sadrži disk uređaje sa posebnim pristupom (raw), koje neki sistemski uređaji koriste za brži pristup disku. Jedan tipičan dsk direktorij sadrži sljedeće uređaje:
$1s /dev/dsk
0s0 1s0 c0t0d0s0 c0tld0s0 f0 f05q f13dt fld8d
0sl 1sl c0t0d0sl c0tld0sl f03d f05qt f13h fld8dt
0s2 1s2 c0t0d0s2 c0tld0s2 f03dt f0d8d f13ht fld8t
. . .
$

U LINUX sistemu, disk uređaji su logički podeljeni na particije, slično particijama definisanim u Tabeli particija MasterBoot MS DOS-a. Datoteke 0s1, 0s2, 0s3, itd., odgovaraju sekcijama jedan, dva, tri, itd. diska broj 0. Fajlovi 1s0, 1sl, 1s2, itd. odgovaraju sekcijama jedan, dva, tri, itd. disk broj 1. Ako sistem ima više diskova, particije će biti numerisane ns0, nsl, itd. za svaki disk broj n.

Sistemi sa mnogo disk jedinica koriste sledeći sistem numerisanja:
sa kontrolerom d disk s sekcijom

gdje je kontroler - broj kontrolora diska; disk - broj diska; sekcija - broj sekcije diska.
Dakle, 0s0 je obično ekvivalentno c0t0d0s0, a 0sl je c0t0d0sl, a imena particija od tri karaktera su samo skraćenica za disk kontroler broj 0.

Datoteke čija imena počinju sa f definiraju različite vrste disketa. Direktorij rmt sadrži datoteke na tračnim uređajima:
$1s /dev/rmt
c0s0 cls0 c3s0 ntape ntapel traka traka

Datoteke c0s0, cls0, c2s0 i c3s0 definiraju četiri uređaja za pohranu kaseta. Datoteke traka i traka definiraju magnetne uređaje za pohranu s dva koluta. Datoteke čija imena počinju sa n odnose se na iste uređaje, samo se traka ne premotava nakon upotrebe, dok korištenje drugih datoteka uzrokuje premotavanje trake kada program koji je koristi završi.

Na nekim sistemima, ove datoteke imaju različita imena, ali se uvijek nalaze u /dev, a rečnik koji obično dolazi sa sistemom sadrži detaljan opis uređaja i njihovih povezanih datoteka.

ExtX sistem datoteka koristi baferovanje podataka za I/O operacije. Kada čita blok informacija, kernel izdaje zahtjev za I/O operaciju za nekoliko susjednih blokova. Takve operacije uvelike ubrzavaju pronalaženje podataka prilikom sekvencijalnog čitanja datoteka. Prilikom pisanja podataka u datoteku, extX sistem datoteka, upisujući novi blok, postavlja do 8 susjednih blokova jedan pored drugog unaprijed. Ova metoda vam omogućava da postavite datoteke u susjedne blokove, što ubrzava njihovo čitanje i omogućava postizanje visokih performansi sistema.

mob_info