Linux / UNIX: Bash Script Sleep or Delay a Specified Amount of Time

by on February 9, 2011 · 4 comments· LAST UPDATED August 20, 2014

in , ,

How do I pause for 5 seconds or 2 minutes in my bash shell script on a Linux or Unix-like systems?

You need to use the sleep command to add delay for a specified amount of time. The syntax is as follows for gnu/bash sleep command:

sleep NUMBER[SUFFIX]
Tutorial details
DifficultyEasy (rss)
Root privilegesNo
Requirementsbash
Estimated completion time1m

Where SUFFIX may be:

  1. s for seconds (the default)
  2. m for minutes.
  3. h for hours.
  4. d for days.

To sleep for 5 seconds, use:
sleep 5
To sleep for 2 minutes, use:
sleep 2m
To sleep for 3 hours, use:
sleep 3h
To sleep for 5 days, use:
sleep 5d
The most common usage are as follows:

## run commmand1, sleep for 1 minute and finally run command2 ## 
command1 && sleep 1m && command2
 
## sleep in bash for loop ##
for i in {1..10}
do
  do_something_here
  sleep 5s
done
 
## run while loop to display date and hostname on screen ##
while [ : ]
do
    clear
    tput cup 5 5
    date
    tput cup 6 5
    echo "Hostname : $(hostname)"
    sleep 1
done
 

Sample outputs from last while loop:

Animated gif.01: Sleep command in action

Animated gif.01: Sleep command in action

sleep Command Bash Script Example

Here is a simple example:

 
#!/bin/bash
echo "Hi, I'm sleeping for 5 seconds..."
sleep 5
echo "all Done."
 

In this example create the lock directory. I'm using `[/\\:.-]' here to ensure that we don't use the same name hat we are using for the .o file. Also, base the name on the expected object file name, since that is what matters with a parallel build.

...
...
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
  if mkdir "$lockdir" >/dev/null 2>&1; then
    break
  fi
  sleep 1
done
....
..
....
 
TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 4 comments… read them below or add one }

1 droopy4u February 13, 2011 at 2:41 pm

with the command ‘sleep’ , for more information use the manual pages of sleep by ‘man sleep’.

sleep 5s ; echo ‘end test sleep 5sec’
sleep 1m; echo ‘end test sleep 1min’

best regards

Reply

2 Nicholas February 14, 2011 at 1:17 am

Thanks, nice tip!

Reply

3 Terry McCall August 20, 2013 at 5:39 pm

FYI for searchers who are OSX users:

The sleep command in OSX does NOT take any suffix arguments (m/h/d). It only takes arguments in seconds.

Reply

4 test February 21, 2014 at 10:13 am

test

Reply

Leave a Comment

Tagged as: , , , , , , , , , ,

Previous Faq:

Next Faq: