mini-at http://www.lwithers.me.uk/projects/mini-at/
========================================================================
(c)2006, Laurence Withers, <l@lwithers.me.uk>.
Released under the GNU GPLv2. See file COPYING or
http://www.gnu.org/copyleft/gpl.html for details.
Really Quick Instructions
-------------------------
Install libiso8601 from http://www.lwithers.me.uk/projects/libiso8601/ .
To build: ./make.sh
To install: ./make.sh install
(you might want to set PREFIX, by default it's /usr/local)
Rationale
---------
Why this and not the standard `at' suite?
1) Deals with non-monotonic time (unfortunately this means we have to
wake up once every so often to check if our time is too far out).
2) Simpler specification of timestamp (uses ISO8601).
3) Allows redirection of stdin from a file which is automatically
deleted.
4) Flexible user control through use of Uinx sockets.
Instructions
------------
Run the programs with `--help' for a summary.
The daemon, mini-atd, must be run in the background. It is responsible for keeping track of commands
to run and for running them at the appropriate time. The client, mini-at, uses a named socket to
communicate with the daemon. By default, the daemon creates this socket at ``~/.mini-atd''.
The daemon can either run in the foreground (default) or in the background, with the `--daemon' or
`-d' option. You can change the name of the socket it uses, and the permissions on the socket. By
default, the permissions are 0600. This means that only the user who ran the daemon (or root) can
cause commands to be run. Commands are always run as the user who ran the daemon, so it is important
to ensure that only trusted users have access to the socket.
The client uses a time specification in ISO8601. If you don't fully specify the time, it uses the
earliest possible interpretation (so `2006' would give `2006-01-01T00:00:00'). If no time zone is
specified, UTC is assumed, but it is best to explicitly indicate this with a Z.
If you wish to provide stdin other than /dev/null for a process, then you can specify a file on the
client commandline using `-f' or `--file'. Note that this file will be deleted once the process is
run. Alternatively, you can use `-f -' and pipe the content you want to the stdin of the client,
which will store a copy in a temporary file.
If you wish to run one program but pretend that you've run it as something else, you can specify the
argv0 option in the client. By default, this will just be a copy of the command name.
The client will copy its commandline arguments from the shell, and performs no processing on them.
This means that it does not expand words or perform quoting.