access log apache

Dan Lukes dan at obluda.cz
Thu Mar 2 09:48:53 CET 2006


Divacky Roman wrote:
> pokazde kdyz se mi rotatne access log apache (tj. jednou mesicne) tak mi
> prestane logovat, musim toho apache restartovat. driv (kde driv = pred par
> mesici?) to fungovalo normalne... vite nekdo cim to muze byt? resp. jeste lepe
> jak to spravit?

	Odpustim si jedovatou poznamky o tom, ze bys o systemu, ve kterem se 
snazis mluvit do kodu jadra mel neco malo vedet ... ;-(


	UFS, to je souborovy system, ktery pouzivas, ma do jist emiry 
tristupnovou architekturu - navrchu jsou adresare, ktere obsahuji "jmeno 
souboru". Z adresare vede ukazatel do jine tabulky - ktera obsahuje 
dalsi udaje o souboru (napr. velikost, prava a pod.) a polozce v teto 
tabulce se rika "inode". A teprve z ni vede odkaz na bloky, ve kterych 
je obsah souboru.

	Dusledkem je, ze jeden soubor ma jeden inode, ale muze mit prakticky 
libovolne mnozstvi rovnocenych jmen v libovolnem mnozstvi adresaru - a 
vsechny ty adresarove zaznamy ukazuji na tentyz inode.

	Adresarove zaznamy jsou tedy jen reference odkazujici na inode a teprve 
to odkazuje obsah souboru.

	Ve skutecnosti pak v systemu vubec nemuzete smazat soubor - jedine, co 
je vam jako uzivateli dovoleno (a to plati i pro superuzivatele) je 
smazat konkretni jmeno souboru. System posoudi, jestli je to posledni 
zpusob jak se na dany obsah odkazat - a pokud ano, pak skutecne smaze i 
soubor, v opacnem pripade neudela nic.

	Jmeno souboru ale neni jedinny zpusob, jak referova inode - kdyz v 
programu soubor otevres, dostanes handle - a to je z hlediska systemu 
dalsi reference na dany inode.

	Soubor tedy muze existovat i tehdy, pokud zlikvidujes jeho posledni 
adresarove jmeno - pokud existuje proram, ktery ma soubor otevreny a 
ktery ho stale referuje.

	Tim, ze soubor (respektive jeho jmeno) smazu tim program k souboru 
samemu pristup neztraci - a kdyz nahodou v vyrobim uplne jiny soubor, 
ktery nahodou pouziva stejne jmeno jako ten predchozi, tak to stale je 
jiny soubor a na pritupu programu k puvodnimu souboru se nic nemeni.

	Nejneprijemneji se s timto jevem setkate, kdyz se vam preplni disk, vy 
najdete ten LOG soubor, jehoz velikost prekrocila vsechny prijatelne 
meze, smazete ho (ted uz vime, ze smazete jen nazev) - a misto se 
neuvolni. To proto, ze program, ktery do nej pise ho ma stale otevreny, 
tedy existuje na soubor platna reference a tedy nejsou dany podminky pro 
smazani souboru.

  ====================

	Tolik informace, ktere ja studentum rikam na prvnim cviceni "Zaklady 
UNIXu" (a verim, ze by mohla byt nova a zajimava i pro jine lidi tady - 
jinak bych to sem nepsal a odpovedel primo tobe) a nyni k tve otazce na 
kterou uz s uvedenymi informacemi bude pomerne snadne hledat odpoved.

	S ohledem ma to, jak se UFS chova, nelze "orotovat" soubor bez 
spoluprace daneho programu nebo bez jeho restartu. Apache v tomto ohledu 
nikdy nesplupracovat a vzdy byl treba ten restart.

	To znamena, ze v dobe, kdy ti to fungovalo tak pouzita metoda mela 
schopnost Apache restartovat. Pokud to v soucasne dobe nefunguje, zrejme 
ji z nejakeho duvodu ztratila.

	Takze pri hledani priciny je treba se vydat timto smerem.

						Dan




More information about the Users-l mailing list