bash:运行命令n分钟,然后SIGHUP它

时间:2010-12-12 20:45:48

标签: linux bash shell timeout

是否有任何bash / linux命令可以启动长时间运行的命令,然后在n分钟后终止它?我想我可以使用fork和kill来修改perl,但有没有人知道那里已有的东西?

3 个答案:

答案 0 :(得分:32)

现在在大多数GNU / Linux发行版中查看timeout命令。

timeout -sHUP 10m command

使用http://www.pixelbeat.org/scripts/timeout

可以实现相同的功能

答案 1 :(得分:18)

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

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

干杯

PS:假设睡眠知道Nm(分钟),否则,你可能想做一些数学运算:)

答案 2 :(得分:10)

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

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