Locking auf der Bash

Written by  on Mai 19, 2012 

Da ich es mit meiner Erklärung sogar ins Linux Magazin zu den Leserbriefen geschafft habe, schreibe ich hier auch noch ein paar Worte zum Locking in Shell-Scripten.

Mit dem Tool "flock" lässt sich in Shell-Scripten ein ganz einfaches Locking realisieren. Und zwar ohne, dass man sich um ein eigenes Lock-File bzw. um das entfernen des Selbingen kümmern muss.

Günstig ist z.B. wenn es bereits ein Backup-Script gibt:

server:~/tmp # time ./backup.sh
mache backup - irgendwas mit rsync
fertig

real    0m5.033s
user    0m0.004s
sys     0m0.004s

Jetzt möchte ich einen Locking-Mechanismus haben, der verhindert, dass das Script 2x gleichzeitg läuft:

flock -w1 -x ./backup.sh ./backup.sh

Das führt dazu, dass ein Kernel-Lock angefordert wird, der eindeutig ist, weil er sich auf das Script bezieht.

Was soll jetzt geschehen, wenn der Lock nicht erfolgreich war? Mit dem Parameter w wurde ein Timeout mitgegeben. D.h. nach einer Sekunde wird abgebrochen. Wie bekomme ich mit, dass das Script gar nicht gelaufen ist?

flock -w1 -x ./backup.sh ./backup.sh || echo es gab ein problem

Ich lasse es mir einfach ausgeben… oder per Mail schicken. Aber das soll ruhig eine Übung für den Leser bleiben.

Category : Allgemein

Tags :

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.