0

スクリプトを数秒間実行する方法を探していますが、それらの秒がx経過する前にスクリプトを中断する可能性があります。x

Ctrl-Cの機能が必要ない場合は、次のように記述します。

./my_script &
sleep $x
kill $!

しかし、ここでスクリプト中にCtrl-Cを実行すると、フォークは実行を続けます。

サブシェルで起動した場合にスクリプトを強制終了する方法を知っています。

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

しかし、それをフォークに置き換える方法がわかりません(私が認めなければならない2つの概念の違いがはっきりとわかりません)。

編集:ソリューションがどれほどポータブルであるかを知りたいのですが、あなたの答えの中でそれを述べることができれば、それは私にとって大きな価値があるでしょう。

4

1 に答える 1

1
timeout $x ./my_script

かなり新しいGNUCoreutilsをお持ちの場合は、timeoutそこに含まれています。以前は、timeoutさまざまなソースからわずかに互換性のないバリアントがいくつかありました(ほとんどの場所で私が持っているものは、元々IIRCのPostfixディストリビューションからのものです)。

ディストリビューションがない場合timeoutは、シェルやPerlのハックがたくさんあります。

于 2012-05-30T17:30:47.343 に答える