table of contents
SLEEPENH(1) | User commands | SLEEPENH(1) |
NAME¶
sleepenh - an enhanced sleep program
SYNOPSIS¶
sleepenh [[--warp|-w] INITIALTIME] TIMETOSLEEP
DESCRIPTION¶
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:
BUGS¶
It is not accurate for a single sleep. Short TIMETOSLEEPs will also not be accurate.
SEE ALSO¶
AUTHOR¶
This manual page was written by Pedro Zorzenon Neto.
2024-12-09 | sleepenh |