退出码

  • 2026.07.28 | youres | 81次围观
    bash wait -n用法详解与版本兼容:并行脚本等任意一个任务结束的正确姿势
    写并行 Shell 脚本时,最常见的痛点是:起了一堆后台任务,想在「任何一个」任务结束时立刻拿到它的退出码,而不是傻等全部跑完。bash wait -n 就是干这个的。但这个选项有明显的版本门槛,macOS 自带的老 bash 直接不认识它。这篇把 wait -n 的用法、退出码规则和版本兼容一次讲清,全部内容都在真机上验证过。 一、wait -n 是干什么的 普通的 wait 不带参数时,会阻塞到所有后台任务结束,且返回值恒为 0——这意味着你根本不知道哪个任务失败了。而...
  • 2026.07.27 | youres | 83次围观
    wait后台任务退出码精确捕获方法:3种方案让并行脚本失败无处遁形
    Shell脚本里用「&」把任务扔到后台跑,速度是快了,但退出码经常收不回来——脚本最后一行 wait 一执行,$? 永远是 0,哪个任务失败了根本不知道。这篇把 wait 后台任务退出码精确捕获的几种方法一次讲透,全是能直接抄的代码。 为什么直接 wait 拿不到退出码 先说清楚问题根源。不带参数的 wait 会等所有后台任务结束,但它的返回值和子任务的成败没有关系——在 bash 里,裸 wait 的退出码通常就是 0(除非 wait 本身被信号打断)。所以下面这...
  • 2026.07.25 | youres | 105次围观
    xargs子进程退出码归属三层架构解析:搞懂主命令/子命令/xargs三者的退出状态关系
    用 xargs 跑批量任务时,最让人头疼的问题之一就是退出码。脚本明明跑完了,但最后脚本的退出状态返回的到底是 xargs 自己的状态,还是某个子命令的状态?同样是退出码 123,为什么有时候表示"子命令失败了",有时候又表示"xargs 自己出问题了"?这篇文章从三层架构的角度,把 xargs 的退出码归属关系讲清楚。 三层退出码架构:一张图说清楚归属关系 先说结论:xargs 的退出码体系其实分为三层,每一层对应不同的退出来源,搞清楚这个,调试效率至少翻倍。 第一...
  • 2026.07.20 | youres | 77次围观
    xargs并行任务超时CSV日志导出脚本:让你的批量任务异常追踪自动化
    做批量任务的时候,最怕的不是任务跑得慢,而是跑完了不知道发生了什么。超时了多少个?哪些是因为网络慢,哪些是因为程序本身卡住了?退出码是124还是143?如果用xargs配合timeout跑并行任务,这些信息默认只会打印到终端,关掉终端就没了。 本文给出3套实战脚本,把xargs并行任务的超时结果完整导出成CSV文件,配合awk、grep三秒定位问题任务,实现批量异常追踪自动化。 一、为什么并行任务超时必须有CSV日志 xargs配合timeout做并行处理时,默认行为是...
  • 2026.07.16 | youres | 110次围观
    xargs --timeout退出码124与外部timeout命令区别:一次讲清楚两个超时机制的核心差异
    为什么这个问题值得单独讲 写批量任务脚本时,超时控制几乎必不可少。但很多人会用两套方案:xargs自带的--timeout参数,以及独立的timeout命令。这两个东西名字都带"超时",退出码也都会返回124,但背后的机制其实完全不是一回事。搞混了,脚本里的错误判断逻辑就会出错——明明是超时,却被当成任务执行失败来处理。 两个124,来源完全不同 xargs --timeout:子进程被超时机制干预 先看xargs的内置超时。xargs的--timeout参数实际上是给每...
  • 2026.07.15 | youres | 101次围观
    xargs子进程超时退出码排查:搞懂124和143的区别让异常定位不再迷茫
    批量任务跑久了,超时是家常便饭。但当超时真的发生,退出码显示124还是143、xargs报的错还是子进程自己的错——这些细节很多人搞不清楚。搞不清楚就没法针对性修复,只能干瞪眼。本文就来把这套逻辑彻底理顺。 先弄清退出码是谁的 理解xargs子进程退出码的前提,是分清楚三层身份:xargs本身、子进程、子进程里跑的真正命令。 一个典型的超时场景: echo "1 2 3" | xargs -P 3 timeout 2 sleep 这里的结构是:xargs → timeout...
  • 2026.07.10 | youres | 163次围观
    xargs并行任务timeout退出码收集脚本:让你的批量任务异常追踪不再难
    做批量任务的时候,你有没有遇到过这种情况:任务跑完了,不知道哪些成功了、哪些失败了、失败的原因是什么?特别是用xargs配合timeout的时候,退出码的收集就成了个头疼的问题。今天这篇文章,就教你写一个实用的xargs并行任务timeout退出码收集脚本,让异常追踪变得清清楚楚。为什么需要收集退出码?xargs配合timeout使用的时候,退出码可不是简单的0和1。它能告诉你很多信息:退出码0:任务正常完成退出码123:xargs自己出了问题退出码124:timeout超时...
  • 2026.07.09 | youres | 116次围观
    timeout --preserve-status保留原退出码用法:3个实战场景彻底搞懂退出状态传递
    timeout退出码的坑:为什么你的脚本判断失灵了 用timeout控制命令超时,最头疼的就是退出码问题。默认情况下,timeout不管命令本身返回什么,超时就给你返回124。这导致脚本里的错误判断逻辑全乱套了。 比如你写了个脚本: timeout 10s your_script.sh if [ $? -eq 0 ]; then echo "成功" elif [ $? -eq 124 ]; then echo "超时" else echo "失败...
  • 2026.07.07 | youres | 141次围观
    xargs并行任务超时日志记录:5个实战技巧让批量任务异常无处遁形
    用xargs做批量任务,最怕的就是任务跑到一半卡住,或者超时了不知道哪个出了问题。日志记录做得好,排错效率能翻好几倍。这篇文章分享5个实战技巧,从基础的stderr重定向,到结构化的CSV日志,再到超时告警,覆盖真实场景中会用到的各种情况。 一、先搞懂xargs的退出码机制 在说日志之前,先把退出码搞清楚。xargs命令本身有退出码规则: 退出码0:所有命令都执行成功 退出码123:xargs接收到退出码在1-125之间的子命令失败 退出码124:子命令超时(这是我们今...
  • 2026.07.04 | youres | 157次围观
    timeout退出码124和125区别详解:搞懂这两个返回值让脚本排错效率翻倍
    写Shell脚本用timeout命令控制任务执行时间,脚本跑完一看退出码——124?还是125?很多人分不清这两个返回值到底是啥意思,遇到超时问题排查半天摸不着头脑。这篇文章就把退出码124和125的区别讲透,附带实战场景和判断技巧。 先搞明白timeout命令的工作原理 Linux的timeout命令来自GNU coreutils,作用是给任意命令设置一个运行时限,超时就发信号把进程干掉。用法很简单: timeout 10s ./backup.sh timeout命...