妇联网站建设方案网站服务体系

张小明 2026/3/12 6:54:37
妇联网站建设方案,网站服务体系,汝州建设局网站,开个淘宝店做网站设计好吗在 GitHub Actions Runner 代码库里#xff0c;有一个看似简单的 Bash 脚本——safe_sleep.sh#xff0c;它负责让 Runner 在某些场景下“安全地睡眠”一段时间。但这个小脚本却因为一个 subtle 的逻辑缺陷#xff0c;让许多开发者和 CI 系统管理员困扰不已#xff0c;甚至…在 GitHub Actions Runner 代码库里有一个看似简单的 Bash 脚本——safe_sleep.sh它负责让 Runner 在某些场景下“安全地睡眠”一段时间。但这个小脚本却因为一个 subtle 的逻辑缺陷让许多开发者和 CI 系统管理员困扰不已甚至引发了性能、资源浪费、Runner 卡死等严重问题。一、什么是safe_sleep.shGitHub Actions Runner 是负责执行 CI/CD 工作流程的后台服务。某些流程中Runner 需要暂停一段时间例如等待自动更新完成这时就会调用一个名为safe_sleep.sh的脚本。看似是个简单任务让程序睡眠 N 秒钟。但设计者并没有调用系统自带的sleep命令而是用 Bash 语言编写了一个自循环脚本。在旧版本中脚本内容大致如下#!/bin/bash SECONDS0 while [[ $SECONDS ! $1 ]]; do : done通过 busy-waiting 来实现睡眠而不是调用标准sleep。二、问题核心循环条件有 Bug乍看这段代码好像没毛病但它有一个细节严重依赖了调度时机while [[ $SECONDS ! $1 ]]; do …这个循环假设SECONDS会按 0 → 1 → 2 → … 逐秒增加并且正好等于目标值。但在真实环境中如果机器负载高或者 Runner 进程被系统调度延迟或者在虚拟化环境里暂停一段时间那么SECONDS有可能会直接跳过目标值例如从 0 跳到 2。在这种情况下条件永远不会变成 “等于目标值”循环就会永远执行下去 ——无限循环。三、实际观测到的问题Very rarely on update of github actions runnersafe_sleep.shhangs forever:$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ... actions 72298 96.3 0.0 4372 3328 ? R Apr02 1988:54 /bin/bash /home/actions-runner/safe_sleep.sh 1 ...详见safe_sleep.sh rarely hangs indefinitely四、影响案例更多比预想严重不仅仅是某个挂起的新 Runner某些开源项目例如 Zig据反馈在自托管 Runner 上观察到了成堆的死循环实例这些无限循环的safe_sleep.sh不仅占满了 CPU还导致 Runner 服务无法正常运行数日之久。五、修复版本https://github.com/actions/runner/commits/main/src/Misc/layoutroot/safe_sleep.sh1. 最新修复版本#!/bin/bash # try to use sleep if available if [ -x $(command -v sleep) ]; then sleep $1 exit 0 fi # try to use ping if available if [ -x $(command -v ping) ]; then ping -c $(( $1 1 )) 127.0.0.1 /dev/null exit 0 fi # try to use read -t from stdin/stdout/stderr if we are in bash if [ -n $BASH_VERSION ]; then if command -v read /dev/null 21; then if [ -t 0 ]; then read -t $1 -u 0 || :; exit 0 fi if [ -t 1 ]; then read -t $1 -u 1 || :; exit 0 fi if [ -t 2 ]; then read -t $1 -u 2 || :; exit 0 fi fi fi # fallback to a busy wait SECONDS0 while [[ $SECONDS -lt $1 ]]; do : done2. 执行逻辑从“优雅”到“原始”1首选sleepif [ -x $(command -v sleep) ]; then sleep $1 exit 0 fi检查sleep是否存在且可执行最准确、最省 CPU正常系统 99% 会走到这里2备用pingif [ -x $(command -v ping) ]; then ping -c $(( $1 1 )) 127.0.0.1 /dev/null exit 0 fi原理ping默认每秒发一次发N1个包 ≈ 等N秒⚠️ 注意点依赖ping没被禁用某些容器里 ping 被移除或需要 CAP_NET_RAW时间精度不如 sleep127.0.0.1保证不会阻塞网络3再退一步read -t仅 Bashif [ -n $BASH_VERSION ]; then if command -v read /dev/null 21; then ... fi fi原理read -t N→阻塞 N 秒等待输入没输入就超时返回为什么检查-t 0 / 1 / 2if [ -t 0 ]; then read -t $1 -u 0; firead -t必须绑定到 TTYstdin/stdout/stderr 只要有一个是 TTY 就能用非交互 shellCI、cron通常都不是 TTY4最终兜底busy waitCPU 自旋SECONDS0 while [[ $SECONDS -lt $1 ]]; do : doneSECONDS是 Bash 内建变量秒级:是 no-op100% 占用一个 CPU 核心
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

虚拟主机 两个网站ftp无法直接wordpress

实战指南:5个技巧快速掌握Wasm二进制分析 【免费下载链接】wabt The WebAssembly Binary Toolkit 项目地址: https://gitcode.com/gh_mirrors/wa/wabt 还记得第一次面对WebAssembly二进制文件时的困惑吗?那些密密麻麻的字节码让人无从下手。作为一…

张小明 2026/3/5 2:54:45 网站建设

做公众号封面的网站龙华附近网站建设

anything-llm Docker本地部署指南 在如今信息爆炸的时代,如何高效管理个人或团队的知识资产,成了一个越来越紧迫的问题。无论是开发者面对海量技术文档,还是企业积累的内部资料,传统搜索方式往往效率低下、结果不准。而随着大语言…

张小明 2026/3/5 6:12:09 网站建设

做视频网站对服务器要去广州seo顾问服务

第一章:Open-AutoGLM批量任务处理的核心价值在大规模自然语言处理场景中,自动化与高效性是系统设计的关键。Open-AutoGLM 作为一款面向 GLM 系列模型的批量任务调度框架,其核心价值体现在对异构任务的统一管理、资源的智能分配以及执行流程的…

张小明 2026/3/5 2:54:48 网站建设

哪个网站做电子请帖好工业设计网站哪个好用

一、什么是 Cisco CCNP 认证? 为何值得报考? Cisco CCNP(Cisco Certified Network Professional)是思科官 对于已具备基础网络知识、希望在网络工程师、资安工程师、数据中心工程师等领域持续深造的人来说,CCNP是从「…

张小明 2026/3/5 2:54:56 网站建设

做的网站图片显示一半国外网站空间

利用EmotiVoice构建多角色对话系统:剧本自动配音方案 在游戏开发、动画制作或互动剧创作中,一个常见的挑战是——如何为多个角色快速生成自然、富有情感的对白语音?传统流程依赖专业配音演员,不仅成本高昂、周期漫长,还…

张小明 2026/3/5 2:54:51 网站建设

南通网站排名优化公司seo做什么行业比较好

商业技术管理最佳实践 在当今的商业环境中,有效的技术管理对于企业的成功至关重要。以下将从多个方面探讨商业技术管理的最佳实践。 外部协作与统一消息 许多企业需要进行外部协作,在这种情况下,应遵循主流的标准和工具。对于主要平台,基本有两个选择:微软或Lotus/IBM。…

张小明 2026/3/5 2:54:56 网站建设