可能重复:
在给定超时后杀死子进程的 Bash 脚本
有没有办法编写一个 shell 脚本来执行某个命令 15 秒,然后终止该命令?
我尝试过睡眠、等待和 ping,但也许我用错了。
使用timeout
命令:
timeout 15s command
注意:在某些需要安装的系统上coreutils
,在其他系统上它丢失或具有不同的命令行参数。请参阅@ArjunShankar 发布的替代解决方案。基于它,您可以封装该样板代码并创建自己的可移植timeout
脚本或小型 C 应用程序来做同样的事情。
有些机器没有timeout
安装/可用。在这种情况下,您可以后台处理该过程;然后它的 PID 被存储为$!
; 然后休眠所需的时间,然后将其杀死:
some_command arg1 arg2 &
TASK_PID=$!
sleep 15
kill $TASK_PID
在这个 URL上,我发现提到了不止一种解决方案来实现这一点。