TGViewer
DevOps на минималках DevOps на минималках @devopseri · 2.78K subscribers
Post #381 1.13K
Знали, как не дать cron-задаче запуститься второй раз поверх первой?

Иногда скрипт запускается по расписанию, но предыдущий запуск ещё не закончился. Например, backup, импорт данных, rsync или очистка логов могут выполняться дольше обычного.

Обычный cron выглядит так:
* * * * * /opt/jobs/backup.sh


Если backup занимает больше минуты, следующий запуск начнётся параллельно:
backup.sh
backup.sh
backup.sh


Это может привести к битым архивам, двойной нагрузке, конфликтам файлов и странным ошибкам.

Для таких случаев используют flock:
flock -n /tmp/backup.lock /opt/jobs/backup.sh


Файл /tmp/backup.lock здесь не хранит данные. Он нужен как точка блокировки.

Ключ -n означает: если lock уже занят, не ждать, а сразу выйти:
flock -n /tmp/backup.lock ./backup.sh


В cron это можно записать так:
* * * * * flock -n /tmp/backup.lock /opt/jobs/backup.sh


Если первый запуск ещё работает, второй просто не стартует.

Для более явного варианта можно использовать shell:
flock -n /tmp/backup.lock \
bash -c 'echo start; ./backup.sh'


А если нужно немного подождать lock, есть timeout:
flock -w 10 /tmp/backup.lock ./backup.sh


Так команда подождёт до 10 секунд, а потом завершится, если блокировка всё ещё занята.
  • 👍 8
More from @devopseri
  1. Sep 21, 2026Из вашего резюме вообще понятно, что вы умеете как DevOps-инженер? Мы разбили работу DevOp…
  2. Sep 21, 2026Настраиваем простой healthcheck для Docker-контейнера! Контейнер может быть запущен, но пр…
  3. Sep 19, 2026Когда ты уже станешь настоящим DevOps? Открываешь вакансию: Linux, Docker, Kubernetes, CI/…
  4. Sep 19, 2026Знали, зачем в Bash иногда используют exec вместо обычного запуска команды? Обычно команду…
  5. Sep 17, 2026Сколько времени вы тратите на отчеты, которые можно собрать автоматически? Если каждый мес…
  6. Sep 12, 2026Делаем безопасный backup конфига перед изменением! Перед правкой nginx, systemd unit, dock…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →