【发布时间】:2015-04-16 06:30:42
【问题描述】:
我正在尝试使用 bash 锁定文件,并且我已经设法做到了,但我不确定我这样做是否正确。
以下代码应该尝试写入lock.log 文件,如果失败,它应该以退出状态-1 退出。如果它可以锁定文件,那么它应该打印订单号,解锁文件,然后退出。
#!/bin/bash
function myfunc {
(
flock -e -n 200 || { echo "$1 - can't reach"; exit -1; }
echo $1 >> $2 #critical
sleep 2
flock -u 200
) 200>$2 #critical
echo "$1 -> end."
exit 0
}
lock="lock.log"
for ((i=0; i < 10; i++)); do
myfunc $i $lock &
done
exit 0
我不明白为什么它会打印在标准输出上,并且标记为关键的 2 行对我来说不是很清楚,所以我恳请一些解释,也许是一个更好的例子。
可能有一些类似的问题,但没有与我要问的基本问题有关 - flock 的用法
谢谢
【问题讨论】: