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