timeout命令详解

timeout命令详解
timeout命令用于为执行其他命令设置一个时间限制-。如果被监控的命令在指定时间内没有完成timeout就会终止它-。它通常用于防止某个命令因意外而无限期运行-。timeout是GNU coreutils软件包的一部分因此几乎在所有的Linux发行版中都预装了。基本语法timeout [选项] 持续时间 命令 [命令参数...]常用选项选项说明-s, --signal信号指定超时发生时发送的信号默认为SIGTERM。-k, --kill-after持续时间在发送初始信号后若命令仍未结束再等待指定的时间后发送SIGKILL信号强制终止。--preserve-status即使命令超时也返回该命令的退出状态而不是默认的124。--foreground当需要命令与终端TTY交互时使用可避免因创建新进程组而导致的问题。-v, --verbose在超时发送信号时向标准错误输出诊断信息。持续时间格式持续时间可以是一个浮点数并支持以下后缀s秒默认m分钟h小时d天例如1.5m等同于 90 秒。如果将持续时间设为0则会禁用超时功能。退出状态timeout命令的退出状态可以帮助判断执行结果124被监控的命令超时且未使用--preserve-status选项。125timeout命令自身执行失败。126找到了命令但无法执行。127未找到要执行的命令。137命令被SIGKILL(9) 信号杀死。其他被监控命令正常退出时的状态码。使用示例1. 基本用法限制命令运行时间让ping命令运行5秒后自动停止-timeout 5s ping www.baidu.com2. 指定超时信号默认发送SIGTERM信号可以用-s选项指定发送SIGKILL信号timeout -s SIGKILL 3s sleep 303. 使用--kill-after优雅终止给命令5秒时间自行结束SIGTERM如果3秒后仍未退出则强制杀死SIGKILL。此例中命令最长运行5 3 8秒。timeout -k 3s 5s 你的命令4. 保留被监控命令的退出状态使用--preserve-status当command超时时timeout也会返回command自身的退出码。timeout --preserve-status 5s 你的命令5. 处理交互式命令对于需要从终端读取输入的命令如sshtop使用--foreground选项可以避免交互问题。timeout --foreground 10s top注意事项默认信号SIGTERM可以让进程有机会进行清理工作如保存数据、关闭文件但进程也可以选择忽略它。子进程问题timeout默认会创建一个新的进程组来运行目标命令。这意味着它主要监控的是直接启动的进程其子进程孙进程可能成为孤儿而继续运行。极短超时设置非常短如亚秒级的超时时间可能因系统调度开销而不够精确-6。2038年问题在某些平台上不支持设置超过2038年的超时时间。查看完整手册在终端中可以使用info coreutils timeout invocation命令查看更完整的官方文档。

最新新闻

日新闻

周新闻

月新闻