Das "Standard" -Sperr-Snippet, das ich gesehen habe, geht ungefähr so ...
(
flock -n 200 || exit 1;
# do stuff
) 200>program.lock
Ist es sicher (Tests scheinen dies zu sagen), exec
an diesem Punkt zu verwenden? Behält der Unterprozess die Sperre bei?
(
flock -n 200 || exit 1;
exec /usr/bin/python vendors-notcoolstuff.py
) 200>program.lock
Ich erinnere mich vage, dass ausführbare Prozesse offene Dateideskriptoren beibehalten, und da Flock Dateideskriptoren verwendet, sollte dies funktionieren. Aber ich kann keine Dokumentation finden, die dies endgültig und klar macht.
Für den Datensatz ist dies spezifisch für Linux.