假设shell脚本A中的一段代码设置有文件锁,在此文件锁的后面(外部)以后台运行的方式调用了脚本B(此脚本中也有文件锁,但是与脚本A的锁文件不是同一个文件),并且脚本B执行时间相当之长,那么,在后台运行的脚本B在结束之后,是否会导致脚本A无法启动第二个进程呢?
下面就来做一个简单的试验,以确定上面的问题。
脚本A(parent.sh)内容如下:
#!/bin/sh SHELL_DIR="/root/" LOCKFILE_1=$SHELL_DIR".lock1" { echo "Go into lock1." if ! flock -n 4; then echo "*** Shell is running, quit." exit 1 fi } 4<>$LOCKFILE_1 $SHELL_DIR"child.sh" & # run shell B on background