How to run a process with a timeout in Bash? [dupl

2019-01-06 09:24发布

Possible Duplicate:
Bash script that kills a child process after a given timeout

Is there a way to write a shell script that would execute a certain command for 15 seconds, then kill the command?

I have tried sleep, wait and ping but maybe I am using them wrong.

2条回答
混吃等死
2楼-- · 2019-01-06 09:44

Use the timeout command:

timeout 15s command

Note: on some systems you need to install coreutils, on others it's missing or has different command line arguments. See an alternate solution posted by @ArjunShankar . Based on it you can encapsulate that boiler-plate code and create your own portable timeout script or small C app that does the same thing.

查看更多
你好瞎i
3楼-- · 2019-01-06 09:51

Some machines don't have timeout installed/available. In that case, you could background the process; its PID then gets stored as $!; then sleep for the required amount of time, then kill it:

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

At this URL I find that there are mentioned, more than one solutions to make this happen.

查看更多
登录 后发表回答