In Unix, what are the at and batch commands, and how do I use them to submit non-interactive job requests?
Note: The at and batch
commands are not available on the UITS research systems at
Indiana University. Big Red uses LoadLeveler for job
submission; Quarry and Mason use
TORQUE/PBS.
In Unix, the at and batch
commands let you schedule non-interactive tasks that execute,
respectively, at a specified time or as soon as system resources
permit. Once a job is completed, the system sends you mail messages
containing the job's output and errors, if any. Unlike
crontab, at and batch are
generally used for jobs that are meant to run only once.
On this page:
Syntax
To submit a job with the at command, first enter:
Replace runtime with the date and time you want to
execute the job. For more, see Setting the job
execution time below. Once you have pressed Enter or
Return, you may see a > or
at> prompt, or there may be no prompt at
all. In any case, enter the command(s) and/or executable(s) you would
like to execute. When you're finished, press Ctrl-d (or
whatever your end-of-transmission character is). The system should
report that the job has been submitted.
The syntax for the batch command is identical, except
you do not set an execution time.
Setting the job execution time
With at, you must specify a time the job should
execute. The format you use to indicate the time is very flexible and
may consist of the following:
-
Time: Enter a one- or two-digit number (0-23) to
indicate the start of an hour on a 24-hour clock (e.g., 13 is 13:00 or
1:00pm). To schedule the job to occur at a time other than the start
of the hour, add minutes (00-59), optionally separated from the hour
by a colon (e.g., 1334 or 13:34). You may follow the number with an
amorpmto indicate the specific time on a 12-hour clock (e.g., 1:34pm or 0134pm). You may also use the wordsnow,noon, andmidnightto indicate the current time. If the time you indicate is later than the current time and you haven't specified a date, the job will execute the same day; otherwise, it will execute the next day.
-
Date: You can schedule a job to execute on a
specific date. You can use keywords, such as
today,tomorrow, or one of the days of the week. The job will execute at the soonest possible date that meets the requirements. You also may enter a fully qualified date, such asNovember 9, 2010. The year is optional, and you can use an abbreviation for the month. As long as the date is unambiguous, your job request will probably succeed.
-
Increment: You also can specify the execution
time by indicating how far in the future it should be, relative to the
current time. To do this, enter a plus sign
(
+), followed by a number and then one of the following keywords:
-
minutes -
hours -
days -
months -
years
For example, if the current time is 12:00pm, the increment of
+2 weekswould set the execution time at noon on a day two weeks hence. -
These elements can be combined, for example:
- To schedule a job for the following Tuesday at a time two hours later than the current time, use: at tuesday +2 hours
To set the execution time for 9:00 in the morning on the second day of next February, use: at 9am February 2
- To set the execution time for 1:34pm on a date exactly three
months from when you issue the
atcommand, use: at 1334 +3 months
Options
The following options are available:
-
-f script: Read the commands to be executed from the filescriptinstead of from standard input.
-
-l: List the jobs you have queued. This option works only withat, but jobs submitted withbatchalso will be listed with this command. On some systems, this option has been replaced by theatqcommand.
-
-m: Send an email notification when the job has finished.
-
-r <job-number>: Cancel the job whose ID isjob-number. This option works only withat, but jobs submitted withbatchcan also be removed. On some systems, this option has been replaced with theatrmcommand.
Examples
| Command | Explanation |
|---|---|
| at noon tar -cf /users/dvader dvader.tar Ctrl-d | The job will run at noon the same day if submitted in the morning,
or noon the next day if submitted in the afternoon. When the task is
performed, a tarball of the /users/dvader directory will
be created.
|
| batch -f /home/hsolo/script1 | Rather than entering the commands into standard input, the user
submits a batch command for a job that will execute the
script /home/hsolo/script1.
|
| at -m 0530 November 9, 2009 /users/chewie/hb28.script Ctrl-d | At 5:30am on November 9, 2009, the script hb28.script
will run. A mail message indicating the script has executed will be
sent to the user who submitted the job.
|
| at -r skywalker.887664428.b | Delete the job skywalker.887664428.b.
|
More
For more, consult the following man pages:
at cron crontabAt Indiana University, for personal or departmental Linux or Unix systems support, see At IU, how do I get support for Linux or Unix?
Last modified on October 25, 2012.







