NBash

Форк
0
46 строк · 1.3 Кб
1
#!/bin/bash
2

3
retries="10" # Число проверок по умолчанию
4
action="lock" # Действие по умолчанию
5

6
# Обработка опций
7
while getopts "lur:" opt; do
8
	case $opt in
9
		l ) action="lock" ;;
10
		u ) action="unlock" ;;
11
		r ) retries="$OPTARG" ;;
12
	esac
13
done
14
shift $((OPTIND - 1))
15

16
# Проверка пустого ввода
17
if [ $# -eq	 0 ]; then
18
	cat << EOF >&2
19
	Использование: $0 [-l|-u] [-r retries] LOCKFILE
20
	Где -l блокировка (по-умолчанию), -u разблокировка, -r X
21
	определяет максимальное количество попыток разблокировки.
22
EOF
23
exit 1
24
fi
25

26
# Проверка lockfile в системе
27
if [ -z "$(which lockfile | grep -v '^no ')" ]; then
28
	echo "$0 ошибка: утилита 'lockfile' не найдена" >&2
29
	exit 1
30
fi
31

32
# Основное тело
33
if [ "$action" = "lock" ]; then
34
	if ! lockfile -1 -r $retries "$1" 2> /dev/null; then
35
		echo "$0: Ошибка: сейчас невозможно создать файл блокировки" >&2
36
		exit 1
37
	fi
38
else
39
	if [ ! -f "$1" ]; then
40
		echo "$0: Ошибка: файл блокировки $1 отсутствует, невозможно разблокировать"
41
		exit 1
42
	fi
43
	rm -f "$1"
44
fi
45

46
exit 0

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.