当前位置: 首页 > article >正文

【busybox记录】【shell指令】timeout

目录

内容来源:

【GUN】【timeout】指令介绍

【busybox】【timeout】指令介绍

【linux】【timeout】指令介绍

使用示例:

例子1

例子2

例子3

例子4

常用组合指令:

指令不常用/组合用法还需继续挖掘:


内容来源:

        GUN : Coreutils - GNU core utilities

        busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客

【GUN】【timeout】指令介绍

timeout:执行有时间限制的命令
timeout 将运行给定的命令,如果该命令在指定的时间间隔后仍在运行,则终止该命令。
简介:
timeout [option] duration command [arg]...
命令不能是一个特殊的内置实用程序(参见第2.10节[特殊内置实用程序],第10页)。
程序接受以下选项。请参见第2章[常用选项],第2页。
选项必须在操作数之前。

‘--preserve-status’
	在超时时返回托管命令的退出状态,而不是指示超时的特定退出状态。如果托管命令支持运行一段不确定的时间,这很有用。
‘--foreground’
	不要创建单独的后台程序组,以便托管命令可以正常使用前台TTY。
	这需要支持两种情况:对命令进行超时计时,以及不从交互式shell调用超时。
	1. 命令是交互式的,需要从终端读取
	2. 用户希望支持从终端直接向命令发送信号(例如按Ctrl-C)
	在这种操作模式下,任何子命令都不会超时。
	此外,SIGCONT不会发送到命令,因为前台进程通常不需要它,并且可能导致本身就是监视器的程序(例如GDB)出现间歇性信号传递问题。
‘-k duration’
‘--kill-after=duration’
	通过发送' KILL '信号来确保被监视的命令被终止。
	指定的持续时间从timeout向命令发送初始信号的时间点开始计算,而不是从命令启动的时间点开始计算。
	如果timeout命令的主要持续时间或为该选项指定的持续时间为0,则此选项不起作用。
	如果选定的信号没有终止命令,或者因为信号被阻塞或忽略,或者命令花费太长时间(例如清理工作)在一定时间内终止自己,则此选项可能很有用。
‘-s signal’
‘--signal=signal’
	在超时时将此信号发送给命令,而不是默认的' TERM '信号。信号可以是一个名称,如“HUP”或一个数字。参见第5页第2.3节[信号规范]。
‘-v’
‘--verbose’
	诊断为标准错误,超时后发送的任何信号。

duration是当前或C语言环境中的浮点数(参见第2.12节[浮点],第10页),后跟一个可选单位:
	‘s’ for seconds (the default)
	‘m’ for minutes
	‘h’ for hours
	‘d’ for days
持续时间为0禁用关联的超时。实际超时时间取决于系统条件,在指定亚秒级超时时应特别考虑这一点。
退出状态:
124 如果命令超时,并且没有指定--preserve-status
125 如果timeout本身失败
126 如果找到命令但无法调用
127 如果找不到命令
137 如果命令或超时被发送KILL(9)信号(128+9)
命令的退出状态
在' KILL(9) '信号的情况下,timeout返回退出状态137,无论该信号是发送给command还是发送给timeout本身,也就是说,这些情况无法区分。
在后一种情况下,命令进程可能在超时被强制终止后仍处于活动状态。

【busybox】【timeout】指令介绍

NA

【linux】【timeout】指令介绍

[root@localhost bin]# timeout --help
用法:timeout [选项] 停留时间 命令 [参数]...
 或:timeout 选项
运行指定命令,在指定的停留时间后若该命令仍在运行则将其中止。

必选参数对长短选项同时适用。
      --preserve-status
                 exit with the same status as COMMAND, even when the
                   command times out
      --foreground
                 when not running timeout directly from a shell prompt,
                   allow COMMAND to read from the TTY and get TTY signals;
                   in this mode, children of COMMAND will not be timed out
  -k, --kill-after=DURATION
                 also send a KILL signal if COMMAND is still running
                   this long after the initial signal was sent
  -s, --signal=SIGNAL
                 specify the signal to be sent on timeout;
                   SIGNAL may be a name like 'HUP' or a number;
                   see 'kill -l' for a list of signals
  -v, --verbose  diagnose to stderr any signal sent upon timeout
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

DURATION is a floating point number with an optional suffix:
's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.
A duration of 0 disables the associated timeout.

If the command times out, and --preserve-status is not set, then exit with
status 124.  Otherwise, exit with the status of COMMAND.  If no signal
is specified, send the TERM signal upon timeout.  The TERM signal kills
any process that does not block or catch that signal.  It may be necessary
to use the KILL (9) signal, since this signal cannot be caught, in which
case the exit status is 128+9 rather than 124.

GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 timeout 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/timeout>
或者在本地使用:info '(coreutils) timeout invocation'

使用示例:

例子1

# 在20秒后发送默认的TERM信号到短暂的sleep 1。

# 因为它在给定的持续时间之前终止,所以'timeout'返回与命令相同的退出状态,在这种情况下为0。

timeout 20 sleep 1

例子2

# 5秒后发送INT信号给sleep命令。5秒后返回,退出状态为124,表示信号已发送。

timeout -s INT 5 sleep 20

例子3

#同样地,但是该命令忽略INT信号,因为它是通过'env——ignore-signal'启动的。因此,'sleep'在整整20秒后定期终止,'timeout'仍然以退出状态124返回。

timeout -s INT 5s env --ignore-signal=INT sleep 20

例子4

#同样,但是在初始INT信号后3秒发送KILL信号。因此,'sleep'在大约8秒(5+3)后被强制终止,'timeout'返回退出状态为137。

timeout -s INT -k 3s 5s env --ignore-signal=INT sleep 20

常用组合指令:

NA

指令不常用/组合用法还需继续挖掘:

NA


http://www.kler.cn/a/312661.html

相关文章:

  • 洞察鸿蒙生态,把握开发新机遇
  • 对称加密与非对称加密:密码学的基石及 RSA 算法详解
  • 记录日志中logback和log4j2不能共存的问题
  • 基础数据结构【c语言版】之 “图” 详细讲述
  • 利用dem和DOM生成路线算法的实现
  • 使用pip安装项目时,遇到以下错误的解决方案:error: [Errno 13] Permission denied
  • Flink 与 Kubernetes (K8s)、YARN 和 Mesos集成对比
  • HarmonyOS元服务与卡片
  • 基于Vue 3组合函数的分页、搜索与排序实践 —— nbsaas-boot项目的实际应用
  • .Net Core 生成管理员权限的应用程序
  • 部署在线GBA游戏,并通过docker安装启动
  • 二级等保测评中安全物理环境的重要性及高危项分析
  • JMM:Java内存模型
  • Python 中的异步编程:从入门到实践
  • gRPC介绍
  • LeetCode: 197. 上升的温度
  • 105.WEB渗透测试-信息收集-FOFA语法(5)
  • 动态语言? 静态语言? ------区别何在?java,js,c,c++,python分给是静态or动态语言?
  • 计算机网络各层有哪些协议?
  • Ubuntu 软件仓库镜像使用帮助
  • js中【argument】知识点详解
  • 低级编程语言和高级编程语言
  • Linux 开发工具篇(〇)yum
  • The application may be doing too much work on its main thread.
  • T9-猫狗识别2(暂时版qaq)
  • 《深度解析 C++中的拷贝构造函数:概念、作用与实践》