|
Re: lug-bg: iztrivane
- Subject: Re: lug-bg: iztrivane
- From: Nikolay Mitev <nikolaymitev@xxxxxxx>
- Date: Thu, 29 Apr 2004 18:05:00 +0300
Anton Zinoviev wrote:
На 25.IV.2004 в 13:00 (+0300) часа Romeo Ninov писа:
имам малко шантава идеа. проблема е че тя работи само ако се логват
малки файлове (не както syslog-a)
mv -f olddir newdir && mkdir olddir
rm -rf newdir
Хм, това ми изглежда доста добра идея. Какъв е проблемът при големи
файлове? При Unix не е проблем да се изтриват от файловата система
файлове, които програмите са отворили и използват активно.
Антон Зиновиев
Проблема е, че има race-condition. В повечето UNIX файлови системи,
директорията е просто списък filename-> inode.
В inode има reference-count, който съдържа броя на hard links към този
файл. Този inode се изтрива само когато този refcount стане 0.
Та вземи следната ситуация: olddir/foo.log сочи към inode X и няма други
hard-links към него. Някоя програма го е отворила и си пише в него нещо.
В момента, в който тая програма го е отворила, refcount на файла е
станал 2. Като се премести директорията olddir в newdir и след това се
изтрие, refcount пада на 1. Т.е. има inode, обаче щом програмата го
затвори, refcount пада на 0 и самия inode се затрива. Та цялата
информация, която е записана във файла м/у изтриването на foo.log и
затварянето на файла от страна на програмата *СЕ ГУБИ БЕЗВЪЗВРАТНО*.
Това може да е, или да не е от значение, но е хубаво да се има впредвид.
cheers,
face
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================
|
|
|