Zmena presmerovani vystupu programu do souboru za jeho behu
Jiri Fritzl
fjuraregistr na seznam.cz
Úterý Březen 15 09:42:05 CET 2005
Martin `MJ' Mares wrote:
> Zdravim!
>
>
>>Bohuzel toto reseni nefunguje. Nelze smazat obsah souboru, do ktereho je
>>zrovna zapisovano.
>
>
> Lze, pokud je ten soubor otevren v modu O_APPEND.
>
> Have a nice fortnight
Mate pravdu, reseni by tedy vypadalo nasledovne:
program >> subor
^^
cp subor subor.old
cp /dev/null subor
Vse jsem otestoval na malem examplu (soubor s velikosti stovky
kilobajtu), vse funguje perfektne.
Co se vsak stane, kdyz soubor 'subor' bude mit velikost 1GBy. Pak bude
jeho kopirovani trvat jiste par vterin ne-li minut. Nemuze v mezicase
dojit ke ztrate prave zapisovanych dat? Nebo jsou data zapsana v prubehu
kopirovani, jeste zahrnuta do toho kopirovani? Asi jsou.
Potom ale dalsi slabe misto je mezi koncem kopirovani a vynulovani
souboru, nemuze zde take teoreticky dojit (pri velkem loadu) ke ztrate
dat? Oba procesy (program, a nulovani) prece bezi paraelne bez jakekoliv
synchronizace.
Vse bych sam otestoval v provozu bohuzel nemam k dispozici pristup
produkcni server.
Dik za Vas nazor.
Jirka Fritzl
Další informace o konferenci Linux