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

Pau*_*rth 19 linux bash shell timeout

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

pix*_*eat 33

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

timeout -sHUP 10m command
Run Code Online (Sandbox Code Playgroud)

使用http://www.pixelbeat.org/scripts/timeout可以实现相同的功能


Mar*_*gen 18

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

yourCommand & PID=$!
sleep ${someMinutes}m
kill -HUP $PID
Run Code Online (Sandbox Code Playgroud)

干杯

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


Sie*_*geX 10

n=5
some_command &
pid=$!
at now + $n minutes <<<"kill -HUP $pid"
Run Code Online (Sandbox Code Playgroud)

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