GNU/Linux >> Znalost Linux >  >> Linux

Jaké unixové příkazy lze použít jako semafor/zámek?

Chci paralelně spouštět více skriptů prostředí Bash. Chci se však vyhnout závodním podmínkám. Jaké příkazy Unixu jsou skutečně atomové, které bych mohl k tomuto účelu použít, a jak je mohu použít?

Přijatá odpověď:

Pokud lockfile není ve vašem systému nainstalován, pak mkdir udělá
práci:je to atomická operace a selže, pokud adresář
již existuje (pokud nepřidáte -p
přepínač příkazového řádku).

create_lock_or_wait () {
  path="$1"
  wait_time="${2:-10}"
  while true; do
        if mkdir "${path}.lock.d"; then
           break;
        fi
        sleep $wait_time
  done
}

remove_lock () {
  path="$1"
  rmdir "${path}.lock.d"
}

Linux
  1. Migrace Unixu na Linux

  2. Co je umask v UNIX/Linux

  3. Spinlock versus Semafor

  1. Nelze odstranit adresář v Unixu

  2. Jaké porty aplikace používá

  3. Co je spinlock v Linuxu?

  1. Linux vs. Unix:Jaký je rozdíl?

  2. Jaký příkaz lze použít k vynucení uvolnění všeho v odkládacím oddílu zpět do paměti?

  3. Co je lepkavý bit v souborových systémech UNIX? Kdy se používá?