Задать вопрос
@pqgg7nwkd4

Как организовать атомарную блокировку на основе lock-файла?

И несколько условно-процессов с именами, которые время от времени желают получить блокировку: Foo, Bar, ... .
Процессы условные, поэтому блокировка должна сохраняться, даже если процесс, захвативший ее, умрет и даже если компьютер перезагрузится. Команды должны быть атомарными (или с использованием аналога flock).

Предлагается организовать в виде некого файла блокировки (my.lock):
1. Если файл отсутствует или пустой, значит блокировка отсутствует.
2. Если файл содержит строку Foo, то это значит блокировка захвачена процессом Foo.

Собственно вопросы:

1. Какой командой bash осуществить захват блокировки?
Команда должна возвращать: 0, если блокировка уже была захвачена этим процессом ранее или только что; 1, если блокировка захвачена кем-то другим.

2. Какой командой bash освобождение блокировки?
Команда должна возвращать: 0, если блокировка была захвачена этим процессом и освободилась; 1, если блокировка захвачена кем-то другим; 2, если блокировки не было.

3. Какой командой bash процесс может проверить захвачена ли блокировка или нет?
Команда должна возвращать: 0, если блокировка была захвачена этим процессом; 1, если блокировка захвачена кем-то другим; 2, если блокировки нет.
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
shambler81
@shambler81 Куратор тега Linux
1. наличие файла команда test
test -f /etc/pki/nginx/dhparam.pem && echo "файл /etc/pki/nginx/dhparam.pem уже есть, пропускаем его" || openssl dhparam -out /etc/pki/nginx/dhparam.pem 4096

2. grep и && или|| в зависимости от требуемого кода.
2. выйти из if или удалить
3.ls
Вообще все зависит от размера и сложности скрипта, я вам написал самый простой способ.
Ответ написан
@notwrite
В качестве файла блокировки использовать каталог(есть каталог - заблокировано) подробности блокировки писать в файл в этом каталоге. команды mkdir grep rmdir
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы