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