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的,所以我不知道,如果它成功,或不执行的方式.
它看起来像您可以使用的另一种形式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)