是否有任何bash / linux命令可以启动长时间运行的命令,然后在n分钟后终止它?我想我可以使用fork和kill来修改perl,但有没有人知道那里已有的东西?
答案 0 :(得分:32)
现在在大多数GNU / Linux发行版中查看timeout命令。
timeout -sHUP 10m command
可以实现相同的功能
答案 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
将在指定时间异步触发。取决于您的脚本,这可能是一个非常重要的功能。