mini-at is a small at-type daemon and commandline utility. mini-at purpose is to schedule the execution of commands at a later date.
Unlike traditional at, it uses the ISO8601 date/time format exclusively, it deals efficiently with non-monotonic time, and it does not require a mail transfer agent.
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.
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.