Linux中的timeout命令
timeout
是一个命令行程序,它运行指定的命令,如果在指定的时间段后仍在运行,则终止该命令。 换句话说,timeout
允许您在有时间限制的情况下运行命令。 timeout
命令是GNU核心实用程序软件包的一部分,该软件包几乎安装在所有Linux发行版中。如果您想运行没有内置超时选项的命令,则非常方便。
在本文中,我们将说明如何使用Linux timeout
命令。
如何使用timeout
命令
timeout
命令的语法如下:
timeout [OPTIONS] DURATION COMMAND [ARG]…
DURATION
可以是正整数或浮点数,后跟可选的单位后缀:
s
-秒(默认)m
-分钟h
-小时d
-天
不使用单位时,默认为秒。 如果持续时间设置为零,则禁用关联的超时。必须在参数前提供命令选项。以下是一些基本示例,演示了如何使用timeout
命令:
在五秒钟后终止命令:
timeout 5 ping 8.8.8.8
在五分钟后终止命令:
timeout 5m ping 8.8.8.8
在一分钟零六秒后终止命令:
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
返回124
。 否则,它返回托管命令的退出状态。
即使在达到时间限制时也要返回命令的退出状态,请使用--preserve-status
选项:
timeout --preserve-status 5 ping 8.8.8.8
在前台中运行
默认情况下,timeout
在后台运行托管命令。 如果要在前台运行命令,请使用--foreground
选项:
timeout --foreground 5m ./script.sh
当您要运行需要用户输入的交互式命令时,此选项很有用。
结论
timeout
命令用于运行有时间限制的命令。timeout
是一个简单的命令,没有太多选项。 通常,您将仅使用两个参数(持续时间和托管命令)来调用timeout
。
如果您有任何问题或反馈,请随时发表评论。
以上是 Linux中的timeout命令 的全部内容, 来源链接: utcz.com/z/507634.html