The at utility reads from standard input the commands to be
executed at a later time. It may be useful to redirect standard
output and standard error within the specified commands.
The -t
time option was added as a new capability to support an
internationalized way of specifying a time for execution of the
submitted job.
Early proposals added a ``jobname'' concept as a way of giving
submitted jobs names that are meaningful to the user submitting
them. The historical, system-specified at_job_id gives no
indication of what the job is. Upon further reflection, it was
decided that the benefit of this was not worth the change in
historical interface. The at functionality is useful in simple
environments, but in large or complex situations, the
functionality provided by the Batch Services option is more
suitable.
The -q
option historically has been an undocumented option, used
mainly by the batch utility.
The System V -m
option was added to provide a method for
informing users that an at-job had completed. Otherwise, users
are only informed when output to standard error or standard
output are not redirected.
The behavior of at <now
> was changed in an early proposal from
being unspecified to submitting a job for potentially immediate
execution. Historical BSD at implementations support this.
Historical System V implementations give an error in that case,
but a change to the System V versions should have no backwards-
compatibility ramifications.
On BSD-based systems, a -u
user option has allowed those with
appropriate privileges to access the work of other users. Since
this is primarily a system administration feature and is not
universally implemented, it has been omitted. Similarly, a
specification for the output format for a user with appropriate
privileges viewing the queues of other users has been omitted.
The -f
file option from System V is used instead of the BSD
method of using the last operand as the pathname. The BSD method
is ambiguous—does:
at 1200 friday
mean the same thing if there is a file named friday
in the
current directory?
The at_job_id is composed of a limited character set in
historical practice, and it is mandated here to invalidate
systems that might try using characters that require shell
quoting or that could not be easily parsed by shell scripts.
The at utility varies between System V and BSD systems in the way
timezones are used. On System V systems, the TZ variable affects
the at-job submission times and the times displayed for the user.
On BSD systems, TZ is not taken into account. The BSD behavior is
easily achieved with the current specification. If the user
wishes to have the timezone default to that of the system, they
merely need to issue the at command immediately following an
unsetting or null assignment to TZ. For example:
TZ= at noon ...
gives the desired BSD result.
While the yacc-like grammar specified in the OPERANDS section is
lexically unambiguous with respect to the digit strings, a
lexical analyzer would probably be written to look for and return
digit strings in those cases. The parser could then check whether
the digit string returned is a valid day_number, year_number, and
so on, based on the context.