wait -n

  • 2026.08.09 | youres | 119次围观
    bash wait -n作业表回收机制详解:为什么后台任务结束后记录还在
    在写bash并发脚本时,很多人会遇到这样一种困惑:明明后台任务已经执行完了,jobs 命令却仍然显示那条记录。脚本跑久了,作业表越来越长,甚至开始影响脚本行为。这到底是怎么回事?今天就来把 wait -n 相关的作业表回收机制讲清楚。 什么是bash的作业表 bash 为每个 shell 会话维护一张「作业表」(job table),用于跟踪当前 shell 中启动的所有后台任务。每启动一个后台进程,bash 就会在作业表中创建一条记录,记录内容包括:进程号(PID)、任...
  • 2026.08.01 | youres | 147次围观
    wait -n实现Shell并发数控制任务池:3种写法让批量任务跑满不超载
    批量任务跑得慢,第一反应是加并发;结果一梭子把几百个后台进程全放出去,机器直接卡死、连接被对端限流、日志乱成一锅粥。真正需要的不是"无限并发",而是并发数可控的任务池——池子里始终跑 N 个,结束一个补一个。bash 从 4.3 起提供的 wait -n 就是干这个的,配合几行循环就能搭出一个够用的调度器,不用装 GNU Parallel,也不用被 xargs 的参数拼接折腾。 下面把我实际在巡检脚本里跑过的几种写法、踩过的坑和兜底方案一次讲清楚。 一、为什么"全放后台再...
  • 2026.07.29 | youres | 132次围观
    bash wait -n 返回 127:究竟是怎么回事
    bash wait -n 返回 127:究竟是怎么回事在 Shell 脚本里用 wait -n 等待后台任务时,最让人摸不着头脑的报错就是退出码 127。明明 wait 是 bash 内置命令,为什么会报"命令找不到"?这篇文说清楚背后的原因。退出码 127 的本质含义在 POSIX 规范里,退出码 127 的标准含义是"命令或参数无法找到"("command not found")。但当你看到 wait -n 触发...
1