
Linux timeout命令设置命令超时
timeout是一个命令行程序,用于在指定的时间内运行命令,如果超出指定时间,则终止该命令
timeout是一个命令行程序,用于在指定的时间内运行命令,如果超出指定时间,则终止该命令。
换句话说,timeout允许您在有时间限制的内运行命令。timeout命令是GNU核心程序的一部分。
timeout命令几乎安装在所有Linux发行版中。如果您想运行没有内置超时选项的命令,则非常方便。
在本教程中,我们将说明如何使用timeout命令,包括命令的语法和选项。
timeout命令
timeout命令的语法是timeout [OPTIONS] DURATION COMMAND [ARG]…。
DURATION可以是正整数或浮点数,后跟时间单位秒s,m分钟,h小时,d天,这是个可选的参数。
在不指定时间单位时,默认为秒。如果超时时间设置为零,则禁用超时。
COMMAND命令你要运行的命令,[ARG] 是要运行命令的参数,多个参数使用空格分隔。
如果要运行的命令需要以root用户运行,例如tcpdump命令,请在timeout命令之前加sudo。
例如命令sudo timeout 300 tcpdump -n -w data.pcap 将会运行tcpdump命令300秒,也就是5分钟后停止tcpdump命令抓取数据包。
sudo timeout 300 tcpdump -n -w data.pcap发送进程信号
如果未给出信号,则在达到时间限制时,timeout将SIGTERM信号发送到给运行的命令。您也可以使用-s/--signal选项指定要发送的信号参数。
例如命令sudo timeout -s SIGKILL ping 8.8.8.8,将在一分钟后将SIGKILL发送到ping命令。您也可以按名称指定信号,例如SIGKILL或编号9。
以下两个命令是等价的,要获取所有可用信号的列表,请运行kill -l命令,这将会打印所有进程信号的列表。
sudo timeout -s SIGKILL ping 8.8.8.8
sudo timeout -s 9 ping 8.8.8.8
kill -l终止进程
SIGTERM是timeout命令默认发送进程信号,某些进程可能会捕获或忽略该信号。在这些情况下,进程会在发送终止信号后继续运行。
要确保杀死忽略SIGTERM信号的命令,请使用-k/--kill-after选项,后跟超时的时间。在达到指定的时间后timeout将会强制终止进程。
例如命令sudo timeout -k 10 1m ping 8.8.8.8,timeout命令设置超时是一分钟,如果在一分钟后ping命令没有终止,它将在十秒钟后将其强制终止。
sudo timeout -k 10 1m ping 8.8.8.8保留退出状态
在达到timeout设置的超时,timeout命令的退出代码将返回124。 否则,它返回运行命令的退出状态。
即使在达到时间限制时也要返回timeout命令的退出状态,请使用--preserve-status选项。
timeout --preserve-status 5 ping 8.8.8.8前台运行
默认情况下,timeout在后台运行托管命令。如果要在前台运行托管的命令,请使用--foreground选项。
当您要运行需要用户交互命令时,此选项很有用。
timeout --foreground 5m ./script.sh在五秒后终止命令
timeout 5 ping 8.8.8.8在五分钟后终止命令
timeout 5m ping 8.8.8.8在一分钟零六秒后终止命令
timeout 1.1m ping 8.8.8.8结论
timeout是一个命令行程序,用于在指定的时间内运行命令,如果超出指定时间,则终止该命令。
timeout是一个简单的命令没有太多选项。通常,您将仅需要设置两个参数,超时和要运行的命令。
如果您有任何问题或反馈,请随时发表评论。











