sleep

As used widely in this book, sleep and date combined can provide invaluable debugging information. The GNU implementation can also take decimal fractions, as well as the suffixes m for minutes, h for hours, and d for days. By inserting sleep statements into a script, you can effectively pause execution at that stage and see what is happening when. The timeout section later in this chapter makes good use of the sleep command to emulate the different scenarios of an application shutdown script.

Another common use for sleep is within a loop; to execute a set of commands once a minute, a simple sleep 60 is easier than scheduling the task in cron. To run a task once every 90 seconds is far more difficult in cron, but again, the sleep statement fits this task perfectly.

download.eps
cat memory.sh
#!/bin/bash
LOGFILE=/var/tmp/memory.txt
while :
do
  RAM='grep MemFree /proc/meminfo | awk '{ print $2 }''
  echo "At 'date +'%H:%M on %d %b %Y'' there is $RAM Kb free on 'hostname -s'" \
        |tee -a $LOGFILE
  sleep 60
done
$ ./memory.sh At 12:45 on 25 Mar 2011 there is 500896 Kb free on goldie At 12:46 on 25 Mar 2011 there is 441336 Kb free on goldie At 12:47 on 25 Mar 2011 there is 213736 Kb free on goldie At 12:48 on 25 Mar 2011 there is 82936 Kb free on goldie At 12:49 on 25 Mar 2011 there is 96996 Kb free on goldie At 12:50 on 25 Mar 2011 there is 87240 Kb free on goldie At 12:51 on 25 Mar 2011 there ...

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.