0

我正在寻找一种方法来运行脚本几秒钟,并且仍然有可能在这些几秒钟过去x之前中断它。x

如果我不需要 Ctrl-C 的能力,我会写

./my_script &
sleep $x
kill $!

但是在这里,如果我在脚本期间按 Ctrl-C,则 fork 会继续运行。

如果在子外壳中启动,我有点知道如何杀死脚本:

trap "echo sub-script terminated" INT
(./my_script)
trap - INT

但我不知道如何将其转换为分叉(我不清楚我必须承认的两个概念之间的区别)。

编辑:我想知道解决方案的便携性,如果你能在你的答案中提到这一点,那对我来说很有价值。

4

1 回答 1

1
timeout $x ./my_script

如果您有一个相当新的 GNU Coreutils,timeout则包含在其中。以前,曾经有许多timeout来自不同来源的稍微不兼容的变体(我在大多数地方拥有的变体来自最初 IIRC 的 Postfix 发行版)。

如果你timeout的发行版没有,那里有很多 shell 和 Perl hacks。

于 2012-05-30T17:30:47.343 回答