2010-12-12 6 views

答えて

17

これは、バックグラウンドでコマンドを開始し、$ PにPIDを格納し、しばらく待ってからSIGHUPで終了します。

yourCommand & PID=$! 
sleep ${someMinutes}m 
kill -HUP $PID 

乾杯

PS:他に、ナノメートル(分)を知っている睡眠を前提とし、あなたには、いくつかの数学をしたいかもしれません:)

+0

+1と '睡眠$((分* 60))' :) – khachik

+0

khachikで達成することができる、それが教育を受けた読者の練習だった;) –

+0

ありがとう!これは本質的に私が書いたperlですが、それをちょうどシェルのイディオムと見ることはいいです。私はまだ誰かがそれを認識している場合、事前に作成されたスクリプトが好きですが、私はこれを答えとして受け入れます。 –

10
n=5 
some_command & 
pid=$! 
at now + $n minutes <<<"kill -HUP $pid" 

オーバーatを使用する利点sleepを待つことはあなたのスクリプトが睡眠が切れるのを待つことをブロックしないということです。あなたは行って他のことをすることができ、atは指定された時刻に非同期に起動します。あなたのスクリプトに応じて、それは非常に重要な機能かもしれません。

+0

私は非同期機能に対してこの+1を与えましたが、ブロックは私が気にしていたものです。 –

関連する問題