Семафор считает, что файл блокировки уже существует - PullRequest
0 голосов
/ 22 ноября 2018

Я использую ссылку для создания семафора - идея заключается в том, чтобы заблокировать запись в БД.

Здесь у меня есть скрипт для создания таблицы в базе данных:

#!/bin/bash


if [ "$#" -lt 3 ]; then
    echo "Not enough parameters"
    exit 1
elif [ "$#" -gt 3 ]; then
    echo "Too many parameters"
    exit 1
fi


if [ ! -d "$1" ]; then
    echo "That database doesn't exist!"
    exit 1
fi

./P.sh $1
if [ -f "$1/$2.txt" ]; then
    echo "That table already exists!"
    ./V.sh $1
    exit 1
else 
    touch "$1/$2.txt"
fi
./V.sh $1

echo "$3" > "$1/$2.txt"

echo "Ok, table created"

exit 0 

Вот мой P-файл:

#!/bin/bash

if [ -z "$1" ]; then
    echo "Usage $0 mutex-name"
    exit 1
elif [ ! -e "$1" ]; then
    echo "Target for the lock must exist"
    exit 2
else
    while ! ln "$1" "$1.lock"; do
        sleep 1
    done
    exit 0
fi

и мой V:

#! /bin/bash
if [ -z "$1" ]; then
    echo "Usage $1 mutex-name"
    exit 1
else
    rm "$1.lock"
    exit 0
fi

скажем, я создаю таблицу, запустив ./create_table people футболисты возраст, рост

Это должно создать файл footballers.lock (созданный P), а затем, как только произойдет запись, V долженубери это.Но по какой-то причине P считает, что файл .lock уже существует, и определенно нет.

Может кто-нибудь определить, что идет не так?

1 Ответ

0 голосов
/ 22 ноября 2018

Нашел - вы не можете использовать ln в каталогах ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...