如何使用Linux(CygWin)shell脚本锁定文件? 我需要稍后在另一个shell脚本的代码中检测 这样做的原因:我有两个Linux(CygWin)shell脚本(名为A和B),并希望使用文件锁定使第一个(A)能够检测第二个(B)是否正在运行。 即使有其他方法来检测程序是否正在运行,我也想学习文件锁定方法,因为它有一天会有优势。
答案 0 :(得分:2)
使用flock
执行以下操作:在执行脚本B期间锁定文件,并从脚本中检查锁定状态。
启动脚本B时:
flock /tmp/lockfile.lck ScriptB.sh
内部脚本A,用于检测锁定:
flock -n /tmp/lockfile.lck echo "Script B is not running" || echo "Script B is running right now"
' -n'选项使flock
至"不等待" 以获取锁定文件的释放(默认操作)。因此,如果等待是你想要的,那将是另一种使用flock的方式。
答案 1 :(得分:1)
您可以触摸锁定文件。
例如,在任何脚本中,当处理一个文件abc.txt
时,该脚本会生成一个名为abc.txt.lck
的锁定文件。因此,如果其他脚本看到其锁定文件,它将停止更改它。
find . -type f |while read line
do
if [ -f ${line}.lck ]; then
echo "file $line is locked, bypass it"
else
touch ${line}.lck
# work on file $line
rm -f ${line}.lck
fi
done