---
name: "sleepenh"
section: "1"
platform: "linux"
package: "sleepenh"
version: "1.8-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/sleepenh"
---

# sleepenh(1)

an enhanced sleep program

## 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:

- sleepenh 0

  ## BUGS

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

## SEE ALSO

[**date**(1)](/date/1.md), [**sleep**(1)](/sleep/1.md).

## AUTHOR

This manual page was written by Pedro Zorzenon Neto.
