Vlákno názorů k článku Hrátky z řádky: pomocné soubory a zamykání od MVA - tento problem jsem resil - navic prenositelne -...

  • Článek je starý, nové názory již nelze přidávat.
  • 8. 4. 2008 14:37

    MVA (neregistrovaný)
    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" :-) )
  • 8. 4. 2008 16:27

    anonymní
    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.
  • 4. 3. 2010 12:06

    Stanislav Vokac (neregistrovaný)

    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.