Следующий механизм блокировки используется для предотвращения одновременного запуска задания cron:
#!/bin/bash
echo "Before critical section"
(
flock -e 200
echo "In critical section"
sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"
При одновременном запуске двух экземпляров последний ждет, пока первый не закончит, а затем запустится. Это может привести к отставанию ожидающих запуска журналов.
Как мне изменить этот script, чтобы, если flock не может получить блокировку, он завершает script? Я пробовал -n без успеха.