You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修复等待Docker服务启动的Bash脚本问题

修复等待Docker服务启动的Bash脚本

你的脚本问题出在until语句里错误使用了[ ](test命令),test命令无法直接处理管道输出,而且我们应该利用命令的退出状态码来判断服务是否启动。

修复后的代码:

until service docker status | grep -q "active (running)"
do
  echo "等待Docker服务启动..."
  sleep 1
done
echo "Docker服务已启动"

关键修改点:

  • 去掉了[ ],直接让until判断管道命令的退出状态:grep找到"active (running)"时退出码为0,until会终止循环;没找到时退出码非0,继续循环。
  • 添加了-q参数给grep,让它静默输出(只返回退出码,不打印匹配内容),避免循环里重复输出冗余信息。
  • 替换了循环内的重复命令为提示信息,更直观。

如果你的系统使用systemctl管理服务(多数现代Linux发行版),可以用更简洁可靠的写法:

until systemctl is-active --quiet docker
do
  echo "等待Docker服务启动..."
  sleep 1
done
echo "Docker服务已启动"

这个写法直接利用systemctl is-active命令的状态判断,无需解析文本输出,兼容性和稳定性更好。

内容的提问来源于stack exchange,提问作者KeyB0rys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 16:42:01