Я использую ссылку для создания семафора - идея заключается в том, чтобы заблокировать запись в БД.
Здесь у меня есть скрипт для создания таблицы в базе данных:
#!/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 уже существует, и определенно нет.
Может кто-нибудь определить, что идет не так?