carta
sleepenh(1)

sleepenh1

An enhanced sleep program

Usage

sleepenh [[{--warp | -w}] INITIALTIME] TIMETOSLEEP

Overview

sleepenh is a program that can be used when there is a need to execute some functions periodically in a shell script. It was not designed to be accurate for a single sleep, but to be accurate in a sequence of consecutive sleeps.
After a successful execution, it returns to stdout the timestamp it finished running, that can be used as INITIALTIME to a successive execution of sleepenh.

Options

-h, --help

display this help and exit

-w, --warp

warp resulting timestamp, when there is no need to sleep. An immediately following call of sleepenh with the resulting TIMESTAMP would most probably result in a real sleep.

-V, --version

output version information and exit

Arguments

TIMETOSLEEP is a real number in seconds, with microseconds resolution (1 minute, 20 seconds and 123456 microseconds would be 80.123456).
INITIALTIME is a real number in seconds, with microseconds resolution. This number is system dependent. In GNU/Linux systems, it is the number of seconds since midnight 1970-01-01 GMT. Do not try to get a good value of INITIALTIME. Use the value supplied by a previous execution of sleepenh.
If you don't specify INITIALTIME, it is assumed the current time.

Exit status

An exit status greater or equal to 10 means failure. Known exit status:

0

Success.

1

Success. There was no need to sleep. (means that INITIALTIME + TIMETOSLEEP was greater than current time).

10

Failure. Missing command line arguments.

11

Failure. Did not receive SIGALRM.

12

Failure. Argument is not a number.

13

Failure. System error, could not get current time.

Usage example

Suppose you need to send the char 'A' to the serial port ttyS0 every 4 seconds. This will do that:

#!/bin/sh
TIMESTAMP=$(sleepenh 0)
while true; do
# send the byte to ttyS0
echo -n "A" > /dev/ttyS0;

# just print a nice message on screen
echo -n "I sent 'A' to ttyS0, time now is ";
sleepenh 0;

# wait the required time
TIMESTAMP=$(sleepenh $TIMESTAMP 4.0);
done

Hint

This program can be used to get the current time. Just execute:

sleepenh 0

History

  • Debian 13 (Trixie): the text shown here
  • Debian 12 (Bookworm) to Debian 10 (Buster)
  • Debian 9 (Stretch)
  • Debian 8 (Jessie) to Debian 5.0 (Lenny)
  • Debian 4.0 (Etch) to Debian 3.1 (Sarge)

--help since Debian 9 (Stretch); --version since Debian 9 (Stretch); --warp since Debian 9 (Stretch); -V since Debian 9 (Stretch); -h since Debian 9 (Stretch); -w since Debian 9 (Stretch).

Bugs

It is not accurate for a single sleep. Short TIMETOSLEEPs will also not be accurate.

Author

This manual page was written by Pedro Zorzenon Neto.

From sleepenh 1.8-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.