新闻详情

新闻详情

首页 / 资讯中心 / 详情

Linux timeout 命令完全指南:指定固定时间并发送固定信号

发布时间:2026/9/30 2:58:30来源:尧图网络
Linux timeout 命令完全指南:指定固定时间并发送固定信号
Linux timeout 命令完全指南指定固定时间并发送固定信号日常运维中我们经常需要运行一些可能“卡住”的命令——压测脚本、爬虫、抓包工具、长任务进程。它们平时运行正常但偶尔会因为网络抖动、死锁、等待输入等原因一直不退出把终端或后台任务死死占住。这时候timeout命令就是最省心的“保险丝”。一、timeout 能做什么timeout是 GNU coreutils 自带的一个命令作用是运行一个命令若它在指定时间内没有结束就向它发送一个信号强制或优雅地把它终止。它解决的核心痛点是命令卡死时能自动超时退出不用人工 CtrlC可以灵活指定“超时多久”、“到时发什么信号”避免长任务无限期占用系统资源二、基本语法timeout[选项]持续时间 命令[参数...]其中“持续时间”就是超时阈值后面的命令 参数是真正要执行的内容。三、指定固定时间时间可以直接写数字也可以带后缀。默认单位是秒后缀s表示秒、m表示分钟、h表示小时、d表示天。# 10 秒不带后缀默认秒timeout10mycmd# 显式写 10 秒更清晰timeout10s mycmd# 5 分钟timeout5m mycmd# 2 小时timeout2h mycmd小提示timeout 10和timeout 10s是等价的。为了可读性建议显式加上单位后缀。四、指定固定信号到点之后timeout默认发送SIGTERM信号 15。我们可以用-s/--signal指定到底发送哪种信号# 到时发送 SIGINTCtrlC 的等效信号2 号timeout--signalINT 10s mycmd# 到时发送 SIGTERM默认15 号timeout--signalTERM10s mycmd# 到时直接 SIGKILL9 号无法被捕获立即强杀timeout-sKILL 10s mycmd信号既可以写名称INT、TERM、KILL也可以写数字2、15、9。常见的信号选择逻辑信号数字行为适用场景SIGTERM15优雅终止进程可捕获并清理默认选择多数场景SIGINT2相当于手动 CtrlC希望模拟用户中断SIGKILL9立即强杀无法被捕获兜底进程彻底不响应时五、完整示例深度解读你可能会在实际脚本里看到这样一条命令timeout--signalINT --kill-after10s 10s\ngauge /root/ngauge-test-20260929/config.yml我们来拆解它的每一部分含义timeout超时控制命令--signalINT到点时发送SIGINT信号让 ngauge 优雅地收尾--kill-after10s发送 SIGINT 之后再给10 秒缓冲时间10s总共运行10 秒到时触发超时ngauge /root/ngauge-test-20260929/config.yml实际要运行的命令及其参数执行的完整时间线启动 ngauge加载config.yml开始压测运行 10 秒后timeout向 ngauge 发送 SIGINT通知它“该停了自己清理”此时 ngauge 有机会保存数据、关闭连接、释放资源不会立即被杀掉如果 ngauge 在 10 秒的缓冲期内正常退出流程就顺利结束如果 ngauge 收到 SIGINT 后 10 秒内仍然不死--kill-after触发发送SIGKILL强制杀死一句话总结这是非常经典的“先优雅后强制”的停止策略——给进程一次体面退出的机会实在不行再动刀。六、为什么这样设计很有用很多服务类工具收到 SIGINT 后会做资源清理比如压测工具要关闭网络连接、抓包工具要落盘保存数据、数据库客户端要提交事务。如果一上来就发 SIGKILL这些数据可能直接丢失或损坏。而--kill-after正好弥补了“发了优雅信号但进程仍卡死”的漏洞保证一定能在某个时间点杀掉进程不会无限期挂住。这对脚本、CI、定时任务里的防挂死处理特别有价值。七、其他常用选项timeout还有几个实用的参数# 超时后保留命令的退出码方便脚本判断失败原因timeout--preserve-status 10s mycmd# 在前台模式下运行配合管道使用避免无法获取子进程输出timeout--foreground10s cmd|teelog.txt# 把超时时长作为第一个参数传给命令少见但存在timeout--timeout10s mycmd--preserve-status超时杀掉命令后返回 127 还是命令实际退出码由它决定用于脚本精确判断“是超时了还是真出错了”。--foreground当 timeout 和管道、后台作业一起用无法往子进程发信号时使用。八、总结timeout是一个小而美的命令核心要素只有两个时间告诉它“多久算超时”信号告诉它“超时后怎么处理”再配合--kill-after就能实现“给机会、不无限等”的优雅停止策略。下次再写压测、抓包或长任务脚本别忘了给它上一道timeout保险丝。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

SQL语言课内索引 2026/9/30 3:59:16

SQL语言课内索引

1. 索引是什么 索引是加速数据查询的辅助数据结构。能加速的原因是"先查目录再取数据"键:索引列上的取值,比如 name 张三。值:能定位到那一行的东西,存什么取决于哪一种索引—— 聚簇索引(主键索引&#xf…

阅读更多 →
大模型推理优化实战:从vLLM到TensorRT-LLM的工程落地 2026/9/30 3:59:16

大模型推理优化实战:从vLLM到TensorRT-LLM的工程落地

1. 项目概述:Model-Optimizer 不是工具名,而是一类工程实践的统称“Model-Optimizer”这个词在当前大模型部署生态里,根本不是某个具体开源项目的官方名称,也不是NVIDIA或Hugging Face发布的标准产品代号。它本质上是一个行业共识…

阅读更多 →
Linux USB设备诊断四层法:物理-协议-驱动-用户空间全链路排查 2026/9/30 3:59:16

Linux USB设备诊断四层法:物理-协议-驱动-用户空间全链路排查

1. 为什么“查看USB设备”不是一条命令能解决的事在Linux下敲lsusb看到一串设备列表,就以为搞定了?我刚入行那会儿也是这么想的——直到客户现场一台工业PLC调试失败,lsusb显示设备在线,但串口/dev/ttyUSB0死活不出现;…

阅读更多 →
订货系统的库存数:仓库 300、财务 287、小程序 305,谁错了 2026/9/30 3:59:16

订货系统的库存数:仓库 300、财务 287、小程序 305,谁错了

订货系统的库存数:仓库 300、财务 287、小程序 305,谁错了上线系统之后,很多公司会出现一个奇怪的现象:仓库说还有 300 件,财务算出 287 件,业务员手里的小程序显示 305 件。三个数字都来自同一套系统&…

阅读更多 →
小程序商城做出来了却没人下单,订单没想清楚归谁管 2026/9/30 3:59:08

小程序商城做出来了却没人下单,订单没想清楚归谁管

小程序商城做出来了却没人下单,订单没想清楚归谁管很多公司做小程序商城的理由很直接:客户都在微信里,那就给他们一个能自己下单的入口。做出来之后发现一个问题:客户确实下单了,但订单没地方去。一个真实的分岔路口小…

阅读更多 →
循证架构--寻找最适合自己的架构 2026/9/30 3:59:08

循证架构--寻找最适合自己的架构

没有最好的架构,只有最合适的架构。循证架构是《Expert One-on-One J2EE Development without EJB》一书中推崇的架构思路,用俺们的话说就是摸着石头过河,找最适合自己的架构。俺现在soho,大活不多,小活不断。我的工作…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉