at(C) 19 June 1992 at(C) Name at, batch - execute commands at a later time Syntax at time [ date ] [ increment ] at -r job-id ... at -l [ job-id ... ] at -qletter time [ date ] [ increment ] batch Description The at and batch commands both accept one or more commands from the stan- dard input to be executed at a later time. at and batch differ in the way the set of commands, or job, is scheduled: at allows you to specify a time when the job should be executed, while batch executes the job when the system load level permits. After a job is queued with either com- mand, the program writes a job identifier (a number and a letter), along with the time the job will execute, to standard error. at takes the following arguments: time The time can be specified as 1, 2, or 4 digits. One- and two- digit numbers are taken to be hours, four digits to be hours and minutes. The time can alternately be speci- fied as two numbers separated by a colon, meaning hour:minute. A suffix am or pm can be appended; otherwise a 24-hour clock time is understood. The suffix zulu can be used to indicate Greenwich Mean Time (GMT). The spe- cial names noon, midnight, and now are also recognized. date An optional date can be specified as either a month name followed by a day number (and possibly year number pre- ceded by an optional comma) or a day of the week (spelt in full or abbreviated to three characters). Two special ``days,'' today and tomorrow, are recognized. If no date is given, today is assumed if the given hour is greater than the current hour and tomorrow is assumed if it is less. If the given month is less than the current month (and no year is given), next year is assumed. increment The time and optional date arguments can be modified with an increment argument of the form +n units, where n is an integer and units is one of the following: minutes, hours, days, weeks, months, or years. The singular form is also accepted, and +1 unit can also be written next unit. Thus, legitimate commands include: at 0815am Jan 24 at 8:15am Jan 24 at now + 1 day at 5 pm Friday next week -r job-id ... Removes the specified job or jobs previously scheduled by the at or batch command. job-id is a job identifier returned by at or batch. Unless you are the superuser, you can only remove your own jobs. -l [ job-id ... ] Lists schedule times of specified jobs. If no job-ids are specified, lists all jobs currently scheduled for the invoking user. Unless you are the super user, you can only list your own jobs. -qletter Places the specified job in a queue denoted by letter, where letter is any lowercase letter from ``a'' to ``z''. The queue letter is appended to the job identifier. The following letters have special significance: a at queue b batch queue c cron queue For more information on the use of different queues, see the queuedefs(F) manual page. batch takes no arguments; it submits a job for immediate execution at lower priority than an ordinary at job. at and batch jobs are executed using sh(C). Standard output and standard error output are mailed to the user unless they are redirected elsewhere. The shell environment variables, current directory, umask, and ulimit are retained when the commands are executed. Open file descriptors, traps, and priorities are lost. Users are permitted to use at and batch if their usernames (logins) appear in the file /usr/lib/cron/at.allow. If that file does not exist, the file /usr/lib/cron/at.deny is checked to determine if a given user should be denied access to at and batch. If neither file exists, only root is allowed to submit a job. If only the at.deny file exists, and it is empty, global usage is permitted. The allow/deny files consist of one user name per line. If the system is installed with C2 security (this is the default, unless the system administrator has relaxed the security), the user will also need the chmodsuid kernel authorization. For more information about sys- tem security and kernel authorizations, see the User's Guide and the Sys- tem Administrator's Guide. Examples The simplest way to use at is to place a series of commands in a file, one per line, and execute these commands at a specified time with the following command: at time < file The following sequence can be used at a terminal to format the file infile using the text formatter nroff(CT), and place the output in the file outfile. batch nroff infile > outfile <Ctrl>d The next example demonstrates redirecting standard error to a pipe (|), which is useful in a shell procedure. The file infile is formatted and the output placed in outfile, with any errors generated being mailed to user (output redirection is covered on the sh(C) manual page). batch <<! nroff infile2 > &1 > outfile | mail user ! To have a job reschedule itself, invoke at from within the job. For example, if you want shellfile to run every Thursday, executing a series of commands and then rescheduling itself for the next Thursday, you can include code similar to the following within shellfile: echo "sh shellfile" | at 1900 thursday next week Files /usr/lib/cron main cron directory /usr/lib/cron/at.allow list of allowed users /usr/lib/cron/at.deny list of denied users /usr/lib/cron/queuedefs scheduling information /usr/spool/cron/atjobs spool area See also cron(C), kill(C), mail(C), nice(C), ps(C), queuedefs(F), sh(C) Diagnostics Complains about syntax errors and times out of range. Standards conformance at and batch are conformant with: AT&T SVID Issue 2; and X/Open Portability Guide, Issue 3, 1989.