如何检查flock执行的命令的退出代码?

Pau*_*ano 3 bash cron exit-code file-locking flock

问候所有.我正在设置一个cron作业来执行一个bash脚本,我担心下一个可能会在前一个脚本结束之前启动.一个小小的谷歌搜索显示,一种流行的解决方法是flock命令,使用方式如下:

flock -n lockfile myscript.sh
if [ $? -eq 1 ]; then
    echo "Previous script is still running!  Can't execute!"
fi
Run Code Online (Sandbox Code Playgroud)

这非常有效.但是,如果我想检查退出代码,我该怎么办myscript.sh?无论退出代码返回将被覆盖flock的,所以我不知道,如果它成功,或不执行的方式.

Bri*_*ell 6

它看起来像您可以使用的另一种形式flock,flock <fd>其中<fd>是一个文件描述符.如果你把它放到子shell中,并将该文件描述符重定向到你的锁文件,那么flock会等到它可以写入该文件(如果它无法立即打开并且你已经通过则会出错-n).然后,您可以在子shell中执行所有操作,包括测试运行的脚本的返回值:

(
  if flock -n 200
  then
    myscript.sh
    echo $?
  fi
) 200>lockfile
Run Code Online (Sandbox Code Playgroud)