如何在Bash中运行超时进程?

时间:2012-04-19 09:09:33

标签: linux shell timeout

  

可能重复:
  Bash script that kills a child process after a given timeout

有没有办法编写一个执行某个命令15秒的shell脚本,然后终止命令?

我试过睡觉,等待和ping但是我可能错了。

2 个答案:

答案 0 :(得分:216)

使用timeout命令:

timeout 15s command

注意:在某些系统上,您需要安装coreutils,而在其他系统上则需要安装timeout或具有不同的命令行参数。请参阅@ArjunShankar发布的替代解决方案。在此基础上,您可以封装该样板代码并创建您自己的便携式{{1}}脚本或小型C应用程序,它们可以完成同样的任务。

答案 1 :(得分:54)

某些计算机没有安装/ timeout。在这种情况下,您可以介绍该过程;然后将其PID存储为$!;然后睡觉所需的时间,然后杀死它:

some_command arg1 arg2 &
TASK_PID=$!
sleep 15
kill $TASK_PID

this URL我发现有提到的不止一种解决方案可以实现这一目标。