Bash Run command for certain time?

2019-01-17 21:00发布

问题:

I am making bash script for my use. How can i run a command for certain time, like 20 second and terminate command? I tried a lot of solutions from internet but nothing works, I also tried timeout command with no success. Please give me some solution for this.

Thanks in advance

Update

for example: I want to run this command in script and terminal after 10 sec

some command

回答1:

Here are some bash scripts and a program called timelimit which may solve your problem. Kill process after it's been allowed to run for some time

EDIT: I think I found a better solution. Try using the timeout program. From the man page: "timeout - run a command with a time limit". For example:

timeout 5s sleep 10s

It basically runs your command and after the specified duration it will kill it.



回答2:

On systems that do not provide timeout command, you can use the following:

your-cmd & sleep 30 ; kill $!

That will run potentially long running your-cmd with timeout of 30 seconds.

If your-cmd does not finish within 30 seconds, it will be sent TERM signal.



回答3:

Are you looking to schedule the execution of the script? Then cron is your friend.



回答4:

I suggest 2 options:

  • On systems where you have the timeout command, you can use it according to man timeout.
  • On systems without it (e.g. CentOS 5), you can use the script supplied with bash /usr/share/doc/bash-3.2/scripts/timeout. Use it according to its usage information.


回答5:

Use sleep and && operand:

sleep [time in seconds] && your-command

Example:

sleep 7 && echo 'Hello world!'