timeout是一个命令行工具,它运行一个指定的命令,如果在给定的时间后仍在运行,则终止该命令。换句话说,timeout命令允许你运行一个有时间限制的命令。timeout命令是GNU核心实用程序包的一部分(GNU core utilities package),几乎所有的Linux发行版都安装了该包。

当你想运行一个没有内置超时选项的命令时,它就很方便。

在这篇文章中,我们将解释如何使用Linux超时命令。

如何使用timeout命令

timeout命令的语法如下。

timeout [OPTIONS] DURATION COMMAND [ARG]...

DURATION可以是一个正整数或一个浮点数,后面是一个可选的单位后缀。

* s - seconds (default)

* m - minutes

* h - hours

* d - days

当没有使用单位时,默认为秒。如果持续时间(Duration)被设置为零,则此命令不起作用。

下面是几个基本的例子,演示了如何使用timeout命令:

五秒后终止命令:

$ timeout 5 ping 8.8.8.8

五分钟后终止一个命令:

$ timeout 5m ping 8.8.8.8

在1分6秒后终止一个命令:

$ timeout 1.1m ping 8.8.8.8

如果你想运行一个tcpdump命令,需要提高权限,要在timeout命令前加上 sudo :

$ sudo timeout 300 tcpdump -n -w data.cap

发送指定信号 / Sending Specific Signal

如果不使用信号选项,timeout在达到时间限制时向被启动的命令发送SIGTERM信号。你可以使用-s(--signal)选项指定要发送的信号。

例如,要在一分钟后向ping命令发送SIGKILL,你可以使用:

$ sudo timeout -s SIGKILL ping 8.8.8.8

你可以用名字指定信号,如SIGKILL,或者使用信号的数字值,如9。 下面的命令与前面的命令相同:

$ sudo timeout -s 9 ping 8.8.8.8

要获得所有可用信号的列表,使用kill -l命令:

$ kill -l

杀死卡住的进程 / Killing Stuck Processes

SIGTERM,当超过时间限制时发送的默认信号,可能被一些进程捕获或忽略。在这些情况下,进程在终止信号(termination signal)发出后继续运行。

为了确保能杀掉被监视的命令,可以使用-k(--kill-after)选项,后面加一个时间段,long option可以--kill-after=DURATION。当使用这个选项后,在达到给定的时间限制后,timeout命令会向被监控的程序发送SIGKILL信号,该信号不能被捕捉或忽略。

在下面的例子中,timeout命令等待ping命令运行一分钟后,发送终止信号。如果ping命令还在运行,将在十秒钟后发送kill信号,强制杀掉该进程:

$ sudo timeout -k 10 1m ping 8.8.8.8

如果使用kill信号杀死进程,那timeout命令返回的exit status就不是124,而是128+9了。

保存退出状态 / Preserving the Exit Status

timeout启动的命令运行达到限时后,timeout命令返回124。否则,它会返回被监视命令的退出状态(exit status)。

要想在达到时限时仍然返回命令的退出状态,请使用 --preserve-status 选项:

$ timeout --preserve-status 5 ping 8.8.8.8

举例:

$ sleep 2

$ echo $?

0

$ timeout 2 sleep 1

$ echo $?

0

$ timeout 1 sleep 3

$ echo $?

124

$ timeout --preserve-status 1 sleep 3

$ echo $?

143

$  timeout --preserve-status 5 ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

$ echo $?

143

$  timeout  2 ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

$ echo $?

124

在前台运行 / Running in Foreground

默认情况下,timeout在后台运行所监控的命令。如果你想在前台运行命令,请使用 --foreground 选项。

timeout --foreground 5m ./script.sh

当你想运行一个需要用户输入的交互式命令时,这个选项很有用。

其他选项

可以使用-v或--verbose选项,会显示出具体的操作信息,比如:

$ timeout -v 3 ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

timeout: sending signal TERM to command ‘ping’

还有--help和--verion选项,是通用的。

结论/Conclusion

timeout命令用于运行一个有时间限制的命令。

timeout是一个简单的命令,没有太多的选项。通常情况下,你只用两个参数来调用timeout,即持续时间和被启动和监控的命令。

参考:

Timeout Command in Linux | Linuxize

Shell - timeout命令相关推荐

  1. shell 常用命令

    shell 常用命令 Shell基本命令 几个基本的shell命令,用ssh管理主机必备. 1.ls  列出目录下的文件,不同类型的文件颜色不同,例如蓝色是文件夹,白色是文件 [root@restor ...

  2. ubuntu退出shell终端命令_ubuntu shell 命令大全

    下面的命令大都需要在 控制台 / 终端 / shell 下输入. 控制台, 终端, 和 shell 意味着同样一件事 -  一个命令行界面, 他可以用来控制系统. 打开一个控制台: 应用程序 --&g ...

  3. Linux下Shell常用命令与工具

    文章目录 Shell常用命令与工具 1.ls 2.echo 3.printf 4.cat 5.tac 6 .rev 7.wc 8.cp 9.mkdir 10.mv 11.rename 12.dirna ...

  4. 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的集群搭建以及shell启动命令脚本编写 一.搭建 ...

  5. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  6. Shell test命令(Shell [])详解,附带所有选项及说明

    test 是 Shell 内置命令,用来检测某个条件是否成立.test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test. test 命令有很多选项,可以进行数值.字符串和文件三个方 ...

  7. Shell+Linux命令实现日志分析

    这篇文章主要介绍了Shell+Linux命令实现日志分析,本文给出了结合grep命令.awk命令等实现了几个常用的日志分析统计长命令,需要的朋友可以参考下 一.列出当天访问次数最多的IP 命令: 复制 ...

  8. 【Linux】1.shell各个命令

    shell各个命令 1.符号参数 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数.如"$*"用「"」括起来的情况.以"$1 $2 - ...

  9. linux中Shell历史命令记录文件的路径是什么

    Bash shell在"~/.bash_history"("~/"表示用户目录)文件中保存了500条使用过的命令,这样能使你输入使用过的长命令变得容易.每个在系 ...

最新文章

  1. 命名空间“Microsoft.AspNet”中不存在类型或命名空间名“Mvc”
  2. icem网格划分如何给内部面网格_icem结构化网格划分 ICEM里面设置一下就可以自动划分网格,为什么要用块?...
  3. 【LeetCode笔记】240. 搜索二维矩阵II 剑指 Offer 04 二维数组中的查找(Java、指针)
  4. PyTorch:VGG16简单入门版
  5. html在线播放avi视频,Doinb涉嫌踩一捧一?暖心安慰小天,拿kanavi做比较却遭到非议...
  6. java resultset 映射到实例_Java中,将ResultSet映射为对象和队列及其他辅助函数
  7. 计算机专业解说,计算机专业解说.ppt
  8. VirtualBox 端口转发(端口映射) 主机和虚拟机相互访问
  9. NPOI Word 换行 【XWPFDocument】
  10. CSDN 图片加载不出来
  11. 小学计算机老师毕业留言,高三老师给学生的毕业留言
  12. 国外EDU教育邮箱功能简介
  13. 计算机一级wps必背知识点,计算机一级WPSoffice考前复习题
  14. Blender 建模案例一(1)
  15. 浅谈*迭代加深*深度优先搜索
  16. QT学习之②信号与槽,以及链接实现方法
  17. 【凸优化笔记一】仿射集+凸集+锥
  18. 轻松搞定阿里OSS文件上传和图片下载
  19. OGC 与 OGC 标准-OGC
  20. PowerDesigner16.5 破解版

热门文章

  1. 仿新版QQ底部导航栏动态拖动按钮
  2. 浮萍自动清理机器人——第一次下水201606
  3. 消消乐要求 c语言程序,C++语言实现开心消消乐
  4. 小飞升值记——(15)
  5. 情报学的主要学术期刊
  6. X4扭曲字体或图形 coreldraw_CorelDRAW X4下载
  7. 2021年诺贝尔物理学奖揭晓,复杂科学获得重视
  8. Python新建纯色图片(任意颜色)
  9. 多模态自编码器从EEG信号预测fNIRS静息态
  10. 计蒜客商汤挑战赛-D-白色相簿-难题-骚题