flock захватывает файловую блокировку перед запуском команды. Если блокировка занята — ждёт или выходит сразу.

flock -n /var/lock/backup.lock /usr/local/bin/backup.sh

В crontab:

*/5 * * * * flock -n /tmp/sync.lock /usr/local/bin/sync.sh

С -n — не ждать, выйти с кодом 1, если занято. Без -n — ждать освобождения. Файл блокировки создаётся автоматически. Блокировка снимается при завершении процесса — зависший lock не застрянет навсегда. Комбо: flock -w 10 — ждать максимум 10 секунд.

#linux #bash #cron #sysadmin