Section author: Vedran Miletić, Vanja Slavuj
Tipovi datoteka¶
doslovno sve je datoteka
pisač, skener, hard disk, USB port, Ethernet kartica, zvučna kartica, web kamera, DVD snimač, …
baza podataka, web stranica, instalirane aplikacije i njihove postavke, …
obične datoteke, poveznice, procesi, socketi, …
tipovi datoteka
obična datoteka, direktorij, simbolička poveznica, specijalna znakovna datoteka, specijalna blok datoteka, fifo datoteka (imenovana cijev), socket
informacija o tipu datoteke zapisana u inodeu, može se pročitati pomoću
stat
-a
naredba
file
prepoznaje tip datoteke (kod običnih datoteka korištenjem tvz. magičnih testova po sadržaju prepoznaje i radi li se o tekstualnoj datoteci, rasterskoj grafici, video zapisu, aplikaciji, …)Napomena: Linux ne razlikuje datoteke po ekstenziji (kao Windowsi), već po sadržaju; za Linux, ekstenzija je samo dio imena, i uredno se može raditi sa PNG datotekom koja se zove
fotka1587.txt
(ako je zaista PNG datoteka).Već samo zbog toga je Linux prilično imun na viruse i zlonamjerni softver; ukoliko vam netko pošalje izvršnu datoteku s ekstenzijom JPG, prije nego je nehotice pokrenete dobiti ćete informaciju da se ne radi o slici, već o izvršnoj datoteci.
obična datoteka (
-
)datoteka korisničke aplikacije; primjer:
$ ls -l /etc/hosts
direktorij (
d
)može sadržavati datoteke i poddirektorije; primjer:
$ ls -l /home/miran
simbolička poveznica (
l
)njihov sadržaj je putanja do datoteke na koju pokazuju (može biti apsolutna i relativna); primjer:
$ ls -l /usr/bin/python
specijalna blok datoteka (
b
)buffered: kod čitanja i pisanja podaci se prvo spremaju u međuspremnik
omogućuje asinkrono zapisivanje (engl. asynchronous write); primjer:
$ ls -l /dev/sda1
specijalna znakovna datoteka (
c
)unbuffered: podaci se čitaju direktno, nema međuspremnika; primjer:
$ ls -l /dev/input/mice
mknod
stvara specijalne blok i specijalne znakovne datoteke (spominjemo radi potpunosti)
Zadatak
Pronađite još tri primjera običnih datoteka i po još jedan primjer za svaku od ostalih vrsta datoteka. (Uputa: koristite rekurzivno izlistavanje.)
Ispitajte tip običnih datoteka koje ste pronašli.
Imenovane cijevi i utičnice¶
fifo datoteka (imenovana cijev) (
p
)radi slično kao cijevi koje smo već koristili, jedino što ima ime
radi isključivo lokalno na računalu; primjer:
$ ls -l /home/vedran/python-samples/fifo1
mkfifo
stvara fifo datoteku danog imenasocket (
s
)datoteka koja služi za međuprocesnu komunikaciju
radi lokalno i preko mreže
npr. lokalna komunikacija dva procesa, otvorena HTTP veza prema nekom poslužitelju za vrijeme preuzimanja datoteke ili otvorena SSH veza s nekog drugog poslužitelja; primjer:
$ ls -l /var/run/acpid.socket
time ćemo se više baviti kad budemo radili modul
socket
u Pythonu
Zadatak
Stvorite fifo datoteku pod nazivom cijev1
. Pokrenite dva terminala.
U jednom terminalu pokrenite
cat < cijev1
, a u drugomcat > cijev1
. Uočite da se ono što unesete u drugom terminalu ispisuje u prvom.Pod kojim uvjetom se oba procesa prekidaju? Mogu li obje strane izazvati prekid?
Postoji li međuspremnik?