On 10.4.2016 1:54, Jozef Drahovsky wrote: Dneska to bude predevsimo nazvoslovi ;-)
Vsechno na co se ptas totiz souvisi s tim, ze nektere pojmy jsou ve skutecnosti technickymi terminy, jejichz skutecny vyznam nelze odvodit semanticky ze slova, ktere se pri jejich popisu pouziva.
podla coho rozoznam, ktory subor je a nie je link a kam (teda okrem symbolickeho)?
Program, kterym souboru pridavas dalsi jmeno se jmenuje 'ln', ale to co pomoci nej vytvaris je proste dalsi jmeno tehoz souboru. Zcela rovnocenne vsem jmenum, ktere soubor uz ma.
Termin "delat link" sice vypada, jako bys delal neco jineho, ale neni to tak - vytvaris jmeno souboru.
Soubor muze mit efektivne nekonecny pocet jmen (ve skutecnosti neni nekonecny, ale hodne vysoky).
Omezeni: 1. To neplati pro adresare - adresar musi mit prave jedno jmeno. 2. Vsechna jmena souboru MUSI byt na tomtez disku
lrwxr-xr-x 1 root wheel 13 Apr 10 01:30 subor1.txt -> /a/subor1.txt -rw-r--r-- 1 root wheel 11 Apr 10 01:31 subor2.txt -rw-r--r-- 1 root wheel 5 Apr 10 01:30 subor3.txt # cat /b/subor1.txt cat: /b/subor1.txt: No such file or directory # cat /b/subor2.txt prvy druhy # cat /b/subor3.txt prvy #
ale odklial sa zobralo telo subor2.txt ? Cize pokial je subor niekde systemovo zalinkovany tak sa fyzicky nevymaze.
Presne. To je totiz dalsi takovy nazvoslovny orisek. Sice se zcela bezne rika "smazat soubor", ale ve skutecnosti takovou funkci UNIX proste nema. To jedine co muzes (a to i jako superuzivatel) je smazat JMENO souboru.
Soubor samotny smaze sam system - a to presne v okamziku, kdy zanikne posledni reference na nej.
Referenci je kazde jmeno (a ty jsi smazal jen jedno ze dvou), reference ale vznika i tim, ze nejaky proces ma soubor otevreny.
To vysvetluje, proc se ti neuvolni misto na preplnenem disku, kdyz smazes petigigovy log Apache. Nesmazal jsi ten sooubor, jen jeho jmeno. Apache ma ten soubor ale stale otevreny, tedy na nej existuje reference. I kdyz soubor uz aktualne nema zadne jmeno. Takze misto na disku se neuvolni.
Zaverecna a hlavna otazka ako rozoznat kedy subory /a/subor2.txt /b/subor2.txt su ten isty a kedy ine?
Unikatni identifikaci souboru neni jeho jmeno, ale dvojice [ device, inode ]. Pokud maji dve jmena tuto dvojici stejnou, jde o jmena tehoz souboru. Pokud ruznou, jde o ruzne soubory.
Onu dvojici ti prozradi prikaz 'stat' - a jsou to ty dve prvni cisla, z tech co vypise ...
Pokud by ti stacilo znat inode pak 'ls -i'. Znat pouze inode staci pokud vis, ze vsechna zkoumana jmena lezi na jednom disku (vzponem, ze soubor nemuze mit jmena na ruznych svazcich)
Dan -- FreeBSD mailing list ([email protected]) http://www.freebsd.cz/listserv/listinfo/users-l
