39

我正在制作一个 bash 脚本供我使用。如何在一定时间内运行命令,例如 20 秒并终止命令?我尝试了很多解决方案但没有任何效果,我也尝试了 timeout 命令但没有成功。请给我一些解决方案。

例如:我想在 10 秒后在脚本和终端中运行这个命令

some command
4

5 回答 5

73

这里有一些 bash 脚本和一个名为 timelimit 的程序,可以解决您的问题。 在允许运行一段时间后终止进程

编辑:我想我找到了更好的解决方案。尝试使用超时程序。从手册页:“超时 - 运行有时间限制的命令”。例如:

timeout 5s sleep 10s

它基本上运行您的命令,并在指定的持续时间后将其杀死。

于 2013-05-08T08:49:15.337 回答
21

在不提供timeout命令的系统上,您可以使用以下命令:

your-cmd & sleep 30 ; kill $!

这可能会长时间运行your-cmd,超时时间为 30 秒。

如果your-cmd在 30 秒内未完成,则会发送TERM信号。

于 2017-02-23T14:05:45.910 回答
1

我建议2个选项:

  • 在您拥有该timeout命令的系统上,您可以根据man timeout.
  • 在没有它的系统上(例如 CentOS 5),您可以使用 bash 提供的脚本/usr/share/doc/bash-3.2/scripts/timeout。根据其使用信息使用它。
于 2016-08-29T10:26:11.323 回答
0

您是否要安排脚本的执行?那么cron是你的朋友。

于 2013-05-08T08:34:51.610 回答
-8

使用sleep&&操作数:

sleep [以秒为单位的时间] &&你的命令

例子:

sleep 7 && echo 'Hello world!'

于 2017-09-29T08:29:32.597 回答