信号处理

  • 2026.07.24 | youres | 141次围观
    timeout -s SIGHUP优雅重启服务配置:让Nginx等服务重载时零中断
    很多人只把 「timeout」 命令当成"到点就杀进程"的工具,默认发的是 SIGTERM。但如果被控制的是 Nginx、sshd 这类服务型进程,直接终止会中断正在处理的连接。其实 「timeout -s」 可以指定发送任意信号,配合 SIGHUP 就能实现"超时后不杀进程,而是触发一次优雅的重载/重启"。这篇把 SIGHUP 的语义、「timeout -s SIGHUP」 的正确写法和几个实战坑一次讲清楚。 为什么优雅重启要用 SIGHUP 而不是 SIGTERM Li...
  • 2026.07.21 | youres | 174次围观
    xargs子进程SIGTERM与SIGKILL信号处理差异:温和终止和强制杀死的实战区别
    用 xargs 跑并行任务,最怕遇到进程杀不掉的情况。按 Ctrl+C 有的任务正常退出,有的直接消失;给进程发 SIGTERM 没反应,换 SIGKILL 才强制终止——这两种信号的差别到底在哪?子进程对它们的行为为什么完全不同?今天彻底把这个事情讲清楚。 先搞懂两个信号的本质区别 Linux 里信号是内核向进程发送的通知机制,SIGTERM 和 SIGKILL 听着差不多,但本质完全不同: SIGTERM(信号编号 15)是温和请求:内核告诉进程请你体面地收场。进程...
  • 2026.07.13 | youres | 153次围观
    xargs重试机制信号处理trap配置:3个实战技巧让批量任务中断不再手忙脚乱
    为什么xargs重试离不开trap 用xargs配合timeout跑批量任务的时候,迟早会遇到这样一种情况:跑了半小时的脚本,被人按了Ctrl+C,或者服务器发来了重启信号,这时候到底哪些任务成功了、哪些失败、哪些正在重试,完全是一笔糊涂账。 单纯靠xargs本身,它只能把子进程杀掉就完事,不会给你留下任何线索。但配合Shell的trap命令,就能做到:捕获中断信号 → 记录当前状态 → 优雅退出。下次脚本重新跑的时候,直接从断点继续,不用从头开始。 本文重点不是讲tr...
1