Часто
cron запускается повторно, деплой стартует дважды, скрипт пересекается сам с собой.PID-файлы — ненадёжны.
Проверки через
ps — гонки.В Linux есть решение —
flock.Запустить команду, только если она ещё не выполняется:
flock -n /tmp/deploy.lock deploy.sh
Если блокировка занят,
flock завершится с ошибкой, команда не стартует.Для скриптов ещё надёжнее:
exec 9>>/tmp/job.lock
flock -n 9 || exit 1
С этого момента гарантированно: только один экземпляр, блокировка снимается автоматически при
exit.🔥
flock — это advisory-блокировка ядра с атомарной установкой, а не договорённость скриптов. Используйте её для cron, деплоя, миграций, бэкапов и CI-шагов.➡️ DevOps Ready | #совет
