flock
ist dafür wirklich hervorragend. Sie können flock
verwenden in einem Wrapper um Ihr Shell-Skript, verwenden Sie es auf der Befehlszeile oder integrieren Sie es in Ihr Skript selbst.
Das Beste an flock
ist, dass es während des Wartens nicht in einer Belegtschleife wartet.
Es auch immer räumt die Sperre auf, wenn Ihr Prozess beendet wird / flock
Ausgänge.
Methoden, die auf der Erstellung von atomaren Dateien/Verzeichnissen basieren, können gesperrt werden, wenn der Prozess ohne Bereinigung beendet wird (oder wenn eine Kernel-Panik oder ein Stromausfall auftritt, ...).
Mit flock
, der Linux-Kernel führt die Bereinigung durch.
Aus dem Handbuch,
(
flock -s 200
# ... commands executed under lock ...
) 200>/var/lock/mylockfile
In diesem Formular können Sie einen bestimmten Codeblock in Ihr Shell-Skript einschließen.
Oder Sie können es so ausführen,
/usr/bin/flock /tmp/lockfile command
Wenn Sie nicht unbegrenzt blockieren/warten möchten, können Sie eine Zeitüberschreitung angeben:
-w --timeout <secs> wait for a limited amount of time
Oder verwenden Sie einfach ein nicht blockierendes Argument:
-n --nonblock fail rather than wait