flock
je na to opravdu vynikající. Můžete použít flock
v obalu kolem vašeho skriptu shellu, použijte jej na příkazovém řádku nebo jej začleňte do samotného skriptu.
Nejlepší věc na flock
je, že zatímco čeká, nečeká v rušné smyčce.
Také vždy vyčistí zámek, když proces skončí / flock
východy.
Metody založené na vytváření atomických souborů/adresářů se mohou zablokovat, pokud proces skončí bez vyčištění (nebo pokud dojde k panice jádra nebo výpadku napájení, ...).
S flock
, linuxové jádro provede vyčištění.
Z příručky
(
flock -s 200
# ... commands executed under lock ...
) 200>/var/lock/mylockfile
V tomto formuláři můžete zabalit konkrétní blok kódu do skriptu shellu.
Nebo to můžete spustit takto,
/usr/bin/flock /tmp/lockfile command
Pokud nechcete blokovat/čekat donekonečna, můžete určit časový limit:
-w --timeout <secs> wait for a limited amount of time
Nebo použijte neblokující argument:
-n --nonblock fail rather than wait