2010-12-12 56 views

回答

17

试试这个,它在后台启动你的命令,将它的PID存储在$ P中,等待一段时间并用SIGHUP杀死它。

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

干杯

PS:即假定知道牛米(分钟)睡眠,否则,你可能想要做一些数学:)

+0

+1和'$睡眠来实现((*分钟60))':) – khachik 2010-12-12 20:54:43

+0

khachik,这是锻炼的受过教育的读者;) – 2010-12-12 20:55:22

+0

谢谢!这实际上就是我刚刚写的perl,但很高兴看到它只是一个shell的成语。我仍然喜欢预先建立的脚本,如果有人知道它,但我会接受这个答案。 – 2010-12-12 20:59:21

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

在使用at的好处等待sleep是您的脚本不会阻止等待睡眠过期。你可以去做其他事情,at将在指定的时间异步激发。根据您的脚本,这可能是一个非常重要的功能。

+0

我给这个+1作为异步功能,虽然阻塞是我的想法。 – 2010-12-12 21:05:30