如何在 Linux 中运行带时间限制(超时)的命令


有时 Unix 命令可能会运行很长时间而没有给出最终输出,或者它可能会进行处理并间歇地给出部分输出。在这种情况下,我们希望设置一个时间范围,在此时间范围内命令必须完成,否则进程应中止。这可以通过使用以下选项来实现。

使用 timeout 工具

Timeout 工具强制命令在给定的时间范围内无法完成时中止。以下是语法和示例。

语法

timeout DURATION COMMAND [ARG]...

Where Duration is the number seconds you want the command to run
Before aborting if the execution is not complete. In duration flag we have,
s - seconds
m - minutes
h - hours
d - days

示例

在以下示例中,我们使用 ping 命令来 ping 我们的网站,并且该过程仅持续 5 秒,之后命令会自动停止运行。

$ timeout 5s ping tutorialspoint.com

运行以上代码将得到以下结果:

PING tutorialspoint.com (94.130.82.52) 56(84) bytes of data.
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=1 ttl=128 time=126 ms
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=2 ttl=128 time=126 ms
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=3 ttl=128 time=126 ms
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=4 ttl=128 time=126 ms
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=5 ttl=128 time=127 ms

使用 timelimit

需要安装 timelimit 程序才能获得此功能,以便在特定时间后终止命令。它将传递警告信号,然后在超时后,它将发送终止信号。您还可以传递参数,例如 - 参数,例如 killtime、warntime 等。因此,此命令使我们可以更精细地控制警告和终止命令。

首先,我们使用以下命令安装程序。

sudo apt-get install timelimit

接下来,我们查看以下使用 timelimit 的示例。此处 –t 指定在发送 warnsig 之前进程的最大执行时间(以秒为单位),而 T 是在发送 warnsig 后发送 killsig 之前进程的最大执行时间。

timelimit -t6 -T12 ping tutorialspoint.com

运行以上代码将得到以下结果:

PING tutorialspoint.com (94.130.82.52) 56(84) bytes of data.
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=1 ttl=128 time=127 ms
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=2 ttl=128 time=126 ms
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=3 ttl=128 time=126 ms
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=4 ttl=128 time=127 ms
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=5 ttl=128 time=128 ms
64 bytes from tutorialspoint.com (94.130.82.52): icmp_seq=6 ttl=128 time=126 ms
timelimit: sending warning signal 15

更新于: 2020年2月25日

562 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告