tento problem jsem resil - navic prenositelne - unix,linux, windows(cygwin), ...
nakonec jsem nekde vygoogloval reseniktere udajne pouziva firefox:
jadro problemu je v primititvu, ktera se obvykle teoreticky nazyva TSL (test-and-set lock) - cim ji implementovat na ruznych OS, shellech,atd...
reseni od firefoxaku je vyuzit operaci "mv", ktera z principu sve funkce ASI MELA BYT atomicka - bud se soubor presune nebo to ma skocnit s chybou ("jiz existuje-chcete prepsat?", nema prava, atd...)
takze postup:
lockfile=filelock_xyz
tmplock=filelock_xyz_tmp$$ # me tohle staci :-)
touch $tmplock
# dulezita je volba -i (interactive) - aby se ptal, zda ma prespat a dostal odpoved "ne"
echo "n" | mv -i $tmplock $lockfile >&2
if [ ! -f $tmplock ]
then
echo "File lock made: $lockfile" >&2
break;
else
....
kazdopadne by me zajimal nazor nekoho kdo ma cas, chut videt do mv, resp. asi az jadra, zda je ta operace fakt atomicka... a tudiz funguje jako tsl, pokud ano tak si myslim, ze je to relativne rozumny zpusob jak to delat a hlavne nevyzaduje nejake speciality (zamykani na urovni fs, dalsi programy a jine "podivnosti" :-) )
Vlákno názorů k článku
Hrátky z řádky: pomocné soubory a zamykání
uživatel si přál zůstat v anonymitě
8. 4. 2008 16:27
Re: lockfile
test existence souboru a nasledny presun jsou dve nezavisle operace. samotny presun potom bez reci prepisuje puvodni soubor. pro tyto ucely je mv k nicemu.
Stanislav Vokac (neregistrovaný)
---.commerzbank.com
4. 3. 2010 12:06
Re: lockfile
Co takhle „mv -i“ kterej se te zepta na konfirmaci prepsani. V noven shellu pak „pgrep mv | xargs kill –9“ a tim to na pozadi zabit a vyhodnotit navratovou hodnotu.
Mel by jsi tak navratovou hodnotu toho, jesli lockfile existuje i za pomoci prikazu mv.
Je to trochu prez ruku a dost zprasek, ale vidis, ze i pomoci mv to jde a tudiz neni jak rikas k nicemu.

