Как я вижу, все изобретают свои велосипеды, вместо того, что бы использовать готовое решение =)
Я же, в данном случае, пользуюсь flock.
Вот пример:
/usr/bin/flock -x -w 0 /var/lock/my_events/event_name -c /path/to/your/script.sh
А вот, краткое описание параметров:
Usage:
flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command...
flock [-sxon][-w #] directory [-c] command...
Опции:
-s --shared Get a shared lock
-x --exclusive Get an exclusive lock
-u --unlock Remove a lock
-n --nonblock Fail rather than wait
-w --timeout Wait for a limited amount of time
-o --close Close file descriptor before running command
-c --command Run a single command string through the shell
-h --help Display this text
-V --version Display version