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
============================================================================
          • ... Danail Petrow
    • ... Anton Zinoviev
  • ... Danail Petrow
  • ... Alexander Shopov
    • ... Georgi Chorbadzhiyski
    • ... Alexander Velin
  • ... Борис Йорданов
    • ... Борис Йорданов
  • ... Romeo Ninov
    • ... Anton Zinoviev
      • ... Nikolay Mitev
        • ... Delian Krustev
      • ... George Danchev
      • ... Anton Zinoviev

Reply via email to