可能重复:
Bash script that kills a child process after a given timeout
有没有办法编写一个执行某个命令15秒的shell脚本,然后终止命令?
我试过睡觉,等待和ping但是我可能错了。
答案 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我发现有提到的不止一种解决方案可以实现这一目标。