gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:22:28 27 4
gpt4 key购买 nike

大家好。我正在设置一个 cron 作业来执行 bash 脚本,我担心下一个可能会在前一个结束之前开始。稍微谷歌一下就会发现解决这个问题的一种流行方法是 flock 命令,使用方式如下:

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

这很好用。但是,如果我想查看myscript.sh的退出码怎么办?它返回的任何退出代码都会被 flock 覆盖,所以我无法知道它是否执行成功。

最佳答案

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

(
if flock -n 200
then
myscript.sh
echo $?
fi
) 200>lockfile

关于bash - 如何检查 flock 执行的命令的退出代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com