aboutsummaryrefslogtreecommitdiff
path: root/bin/sleep/sleep.1
diff options
context:
space:
mode:
Diffstat (limited to 'bin/sleep/sleep.1')
-rw-r--r--bin/sleep/sleep.184
1 files changed, 46 insertions, 38 deletions
diff --git a/bin/sleep/sleep.1 b/bin/sleep/sleep.1
index 924bc732a0d0..c9069a015706 100644
--- a/bin/sleep/sleep.1
+++ b/bin/sleep/sleep.1
@@ -29,10 +29,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" @(#)sleep.1 8.3 (Berkeley) 4/18/94
-.\" $FreeBSD$
-.\"
-.Dd December 31, 2020
+.Dd March 22, 2024
.Dt SLEEP 1
.Os
.Sh NAME
@@ -40,13 +37,27 @@
.Nd suspend execution for an interval of time
.Sh SYNOPSIS
.Nm
-.Ar seconds
+.Ar number Ns Op Ar unit
+.Op ...
.Sh DESCRIPTION
The
.Nm
-command
-suspends execution for a minimum of
-.Ar seconds .
+command suspends execution for a minimum of
+.Ar number
+seconds (the default, or unit
+.Li s ) ,
+minutes (unit
+.Li m ) ,
+hours (unit
+.Li h ) ,
+or days (unit
+.Li d ) .
+Intervals can be written in any form allowed by
+.Xr strtod 3 .
+If multiple intervals are given, they are added together.
+If the final sum is zero or negative,
+.Nm
+exits immediately.
.Pp
If the
.Nm
@@ -59,56 +70,49 @@ sleep is printed on the standard output.
The
.Dv SIGALRM
signal is not handled specially by this implementation.
-.Pp
-The
-.Nm
-command allows and honors a non-integer number of seconds to sleep
-in any form acceptable by
-.Xr strtod 3 .
-This is a non-portable extension, but is also implemented in GNU sh-utils
-since version 2.0a (released in 2002).
.Sh EXIT STATUS
.Ex -std
.Sh EXAMPLES
-To schedule the execution of a command for
-.Va x
-number seconds later (with
-.Xr csh 1 ) :
+To run a command after half an hour:
.Pp
-.Dl (sleep 1800; sh command_file >& errors)&
+.Dl (sleep 0.5h; sh command_file >out 2>err)&
.Pp
-This incantation would wait a half hour before
-running the script command_file.
-(See the
+This incantation would wait half an hour before
+running the script
+.Pa command_file .
+See the
.Xr at 1
-utility.)
+utility for another way to do this.
.Pp
-To reiteratively run a command (with the
-.Xr csh 1 ) :
+To reiteratively run a command:
.Pp
.Bd -literal -offset indent -compact
-while (1)
- if (! -r zzz.rawdata) then
- sleep 300
+while :; do
+ if ! [ -r zzz.rawdata ] ; then
+ sleep 5m
else
- foreach i (`ls *.rawdata`)
+ for i in *.rawdata ; do
sleep 70
- awk -f collapse_data $i >> results
- end
+ awk -f collapse_data "$i"
+ done >results
break
- endif
-end
+ fi
+done
.Ed
.Pp
The scenario for a script such as this might be: a program currently
running is taking longer than expected to process a series of
files, and it would be nice to have
another program start processing the files created by the first
-program as soon as it is finished (when zzz.rawdata is created).
-The script checks every five minutes for the file zzz.rawdata,
+program as soon as it is finished (when
+.Pa zzz.rawdata
+is created).
+The script checks every five minutes for the file
+.Pa zzz.rawdata ,
when the file is found, then another portion processing
is done courteously by sleeping for 70 seconds in between each
-awk job.
+.Xr awk 1
+job.
.Sh SEE ALSO
.Xr nanosleep 2 ,
.Xr sleep 3
@@ -118,6 +122,10 @@ The
command is expected to be
.St -p1003.2
compatible.
+.Pp
+Support for non-integer intervals, units other than seconds, and
+multiple intervals which are added together are non-portable
+extensions first introduced in GNU sh-utils 2.0a (released in 2002).
.Sh HISTORY
A
.Nm