Установка flock в Unix/Linux

Установка flock в Unix/Linux

flock — утилита, которая позволяет использовать лок-файл для предотвращения запуска копии процесса (вашего скрипта, крона или чего-то еще). Например, используя cron нужно быть уверенным, что предыдущий запуск вашего скрипта уже завершен.

Установка flock в Unix/Linux

У Linux ОС, данная утилита уже идит с самой коробки.

Установка flock в Mac OS X

Для начала, устанавливаем HOMEBREW, после чего — выполняем:

$ brew tap discoteq/discoteq

Этой командой, что-то поставится в ОС, осталось выполнить установку flock-а:

$ brew install flock

Можно использовать!

Установка flock на другие Unix/Linux ОС

Если в системе не имеется этой утилиты, то можно собрать ее из сорцов:

# FLOCK_VERSION=0.2.3 \
wget https://github.com/discoteq/flock/releases/download/v${FLOCK_VERSION}/flock-${FLOCK_VERSION}.tar.xz \
xz -dc flock-${FLOCK_VERSION}.tar.xz | tar -x \
cd flock-${FLOCK_VERSION} \
./configure \
make \
make install

Вот и все!

Использование flock в Unix/Linux

Например, можно использовать:

$ `which flock` -w 600 /var/tmp/test_script.lock ./test_script.sh

Или:

$ `which flock` -w600 /var/tmp/myscript.lock bash myscript.sh

Данная команда, запустит ./test_script.sh скрипт (он находится в текущей директории). Так же, будет создан test_script.lock файл. Пока он активен, новый вызов скрипта не будет выполнен из-за лока. Когда программа (скрипт) завершится, то лок файл будет удален, тем самым — можно будет использовать повторый запуск. Параметр -w 600 определяет время ожидания комманды flock на освобождение lock-файла. Чтобы убрать время блокировки лока, используйте «-w 0» опцию.  Так же, можно ожидать бесконечно долгое временя, — тогда нужно параметр опустить.

Таким вот способом, можно предотвратить повторный запуск ващих скриптов. Вот и все, статья «Установка flock в Unix/Linux» завершена.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.