gpt4 book ai didi

mysql - 这个 bash 脚本试图用 mysql 做什么?

转载 作者:行者123 更新时间:2023-11-29 05:03:17 25 4
gpt4 key购买 nike

写follow bash脚本的人已经离开了,我需要弄清楚他写的follow bash脚本的含义。在运行一些需要运行 mysql 实例的测试用例之前,此脚本在 docker 容器中执行。

我猜是关于启动一个mysql服务器,但我不太确定这个脚本中每个语句的确切含义。

echo -n "Loading [+"
( echo "SHOW TABLES;" | mysql mysql 2>/dev/null 1>/dev/null ) || \
run-mysqld 2>/dev/null 1>/dev/null &

while ! ( echo "SHOW TABLES;" | mysql mysql 2>/dev/null 1>/dev/null ) ;
do
echo -n +
sleep 1
done
echo "] Done."

我必须弄清楚这一点,因为我们的 bitbucket 管道最近在运行此脚本时卡住了并超时(以前没问题)。提前致谢。

最佳答案

此序列尝试通过 mysql 运行 SHOW TABLES,忽略任何输出。如果 mysql 失败(因为 mysqld 没有运行),它会启动 mysqld 在后台运行。

( echo "SHOW TABLES;" | mysql mysql 2>/dev/null 1>/dev/null ) || \
run-mysqld 2>/dev/null 1>/dev/null &

代码的第二部分只是等待 mysqld 启动,由以下退出 0 的代码发出信号:

( echo "SHOW TABLES;" | mysql mysql 2>/dev/null 1>/dev/null )

如果 mysqld 没有进行一次尝试,代码的第二部分将永远运行。看起来就是这样。

使此代码免于挂起的最简单方法是限制我们 sleep 的时间:

max_sleep=15
sleep=0
while ! ( echo "SHOW TABLES;" | mysql mysql 2>/dev/null 1>/dev/null ) ;
do
echo -n +
sleep 1
((sleep++ > max_sleep)) && { echo "Failed to start mysqld] Error."; exit 1; }
done
echo "] Done."
exit 0

关于mysql - 这个 bash 脚本试图用 mysql 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53754929/

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