Если задача по cron ещё не завершилась, а уже стартовал следующий запуск, можно получить несколько одновременно работающих экземпляров скрипта. Это приводит к конфликтам, лишней нагрузке и непредсказуемому поведению.
Решить проблему поможет lckdo из пакета moreutils ✅
🔜 Установка:
sudo apt install moreutils
🔜 Запуск с блокировкой:
lckdo /tmp/my-script.lock /usr/local/bin/script.sh
Если предыдущий экземпляр ещё работает, новый запуск завершится сразу.
🔜 Чтобы дождаться освобождения блокировки, используйте:
```
lckdo -w /tmp/my-script.lock /usr/local/bin/script.sh```
💡 Частый сценарий — защита cron-задач:
* * * * * lckdo /tmp/backup.lock /usr/local/bin/backup.sh
Теперь новый запуск начнётся только после завершения предыдущего.
⚠️ Файл блокировки сам по себе ничего не блокирует. Блокировку удерживает процесс, который его открыл. После завершения процесса она автоматически снимается, даже если файл остаётся на диске.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt