如何在 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
广告