我有一个bash脚本,它可以转发到其他Shell脚本和python脚本的混合。如果这些脚本中的任何一个失败,或者用户取消了该脚本(CTRL + C),则在所有情况下我都希望执行一些清理。
许多用户可以在同一OS用户下通过SSH进入linux系统并启动构建。这是我们的构建服务器。该脚本需要编写一个“ build.lock”文件或任何东西,无论何时该脚本以任何方式退出(错误,用户退出等),都将清除该文件。如果脚本在第一个脚本执行完毕之前再次运行,则应检查“ build.lock”文件并拒绝继续。
我假设这是防止脚本并行执行的最佳方法。我们在Ubuntu上使用Bash。下面是脚本本身:
#!/bin/bash -e
pushd build-server-scripts > /dev/null
./build.sh "$@"
popd > /dev/null
我的想法是解决这个问题的好方法吗?如果是这样,实施的方式是什么?如果没有,那么每个人还会建议其他哪些想法?我对Bash脚本缺乏经验,因此可以边学边学。
如果我正确理解了您的问题,则可能需要研究bash的问题。trap
您可以定义一个在脚本退出时调用的陷阱函数
# Set up a cleanup function to be triggered upon script exit
__cleanup ()
{
[[ -f "build.lock" ]] && rm "build.lock"
}
trap __cleanup EXIT
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句