手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux中使用Timeout命令示例详解

[日期:2014-11-06] 来源:Linux社区  作者:Linux [字体: ]

 

timeout是一个命令行实用程序,它运行指定的命令,如果在给定的时间段后仍在运行,则终止该命令。换句话说,timeout使您可以运行具有时间限制的命令。timeout命令是GNU核心实用程序软件包的一部分,该软件包几乎安装在所有Linux发行版中。当您要运行没有内置timeout选项的命令时,它非常方便。本文为您介绍在Linux操作系统中使用Timeout命令的示例。

 

如何使用timeout命令

 

timeout命令的语法如下:

 

timeout [OPTIONS] DURATION COMMAND [ARG]…

 

DURATION可以是正整数或浮点数,后跟可选的单位后缀:

 

s-秒(默认)。

 

m-分钟。

 

h-小时。

 

d-天。

 

如果不使用任何单位,则默认为秒。如果持续时间设置为零,则禁用关联的timeout。

 

必须在参数之前提供命令选项。

 

以下是一些基本示例,这些示例演示了如何使用timeout命令:

 

1、五秒钟后终止命令:

 

timeout 5 ping 8.8.8.8

 

2、五分钟后终止命令:

 

timeout 5m ping 8.8.8.8

 

3、一分钟六秒钟后终止命令:

 

timeout 1.1m ping 8.8.8.8

 

如果要运行需要提升权限的命令(例如tcpdump),请在timeout前添加sudo:

 

sudo timeout 300 tcpdump -n -w data.pcap

 

发送特定信号

 

如果未给出信号,则在达到时间限制时,timeout会将SIGTERM信号发送到托管命令,您可以使用-s(--signal)选项指定要发送的信号。

 

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

 

sudo timeout -s SIGKILL ping 8.8.8.8

 

可以通过信号名称(例如SIGKILL)或数字(例如9)来指定信号,以下命令与上一个命令相同:

 

sudo timeout -s 9 ping 8.8.8.8

 

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

 

kill -l

 

消除卡住的进程

 

SIGTERM,超过时间限制时发送的默认信号可能会被某些进程捕获或忽略,在那种情况下,该过程在发送终止信号后继续运行。

 

要确保杀死受监视的命令,请在一段时间后使用-k(--kill-after)选项,在达到给定的时间限制后使用此选项时,timeout命令会将SIGKILL信号发送到无法捕获或忽略的托管程序。

 

在以下示例中,timeout将命令运行一分钟,如果未终止,它将在十秒钟后将其杀死:

 

sudo timeout -k 10 1m ping 8.8.8.8

 

timeout -k “./test.sh”

 

在达到指定的时间限制后被杀死。

 

保留退出状态

 

达到时间限制后,timeout将返回124,否则,它将返回托管命令的退出状态。

 

即使在达到时间限制时也要返回命令的退出状态,请使用--preserve-status选项:

 

timeout --preserve-status 5 ping 8.8.8.8

 

运行Foreground

 

默认情况下,timeout在后台运行托管命令,如果要在前台运行命令,请使用--foreground选项:

 

timeout --foreground 5m ./script.sh

 

当您要运行需要用户输入的交互式命令时,此选项很有用。

 

结论

 

timeout命令用于运行具有时间限制的给定命令。

 

timeout是一个简单的命令,没有太多选择,通常,您仅使用两个参数来调用timeout。

 

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-11/109076.htm

linux
相关资讯       Timeout 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款