at_client — Service plugin for deferred command execution with at(1)


at_client is a loadable plugin that will utilize the at(1) framework to schedule deferred commands.

In practice, this is used by exchange_emsmdb(4gx) and zcore(8gx) to implement delayed sending of messages.

The atd(8) daemon needs to be running for commands to get executed.

Configuration directives

This plugin has no directives.


The at implementation of Thomas Koenig and maintained by Calhariz (as of 2020) is present in Linux distributions as well as FreeBSD, and it wraps the job ID counter at 1048576 back to 0. New jobs can receive an ID that is still in use by a prior pending job.

The at implementation of OpenBSD (derived from Thomas Koenig’s) has a modification by Millert that changes job IDs into job “names”, which are of the form “<starttime>.<queue>”, i.e. no longer a single integer. This is unsupported by Gromox. Due to the job names, the at implementation supports storing at most one job every second — the start time is shifted forwards if a collision is detected, but only up to 120 seconds, which means that job enqueueing can trivially fail.

See also

gromox(7), at(1), atd(8)