我正在使用链接来创建信号灯-这个想法是为了防止写入数据库。
这里有一个脚本可以在数据库中创建表:
#!/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足球运动员的年龄,身高
来创建表格这应该创建一个文件footballers.lock(由P创建),然后一旦写入发生,V应该将其删除。但是出于某种原因,P认为.lock文件已经存在,并且肯定不存在。
任何人都可以发现问题所在吗?
答案 0 :(得分:0)
找到它了-您不能在目录上使用ln ...