ARCHIVED: In Unix, what are the at and batch commands, and how do I use them to submit non-interactive job requests?

This content has been archived, and is no longer maintained by Indiana University. Information here may no longer be accurate, and links may no longer be available or reliable.

Note: The at and batch commands are not available on the UITS research systems at Indiana University.

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:


To submit a job with the at command, first enter:

 at runtime

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 am or pm to indicate the specific time on a 12-hour clock (e.g., 1:34pm or 0134pm). You may also use the words now, noon, and midnight to 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 as November 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 weeks would 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 at command, use:
     at 1334 +3 months


The following options are available:

  • -f script: Read the commands to be executed from the file script instead of from standard input.
  • -l: List the jobs you have queued. This option works only with at, but jobs submitted with batch also will be listed with this command. On some systems, this option has been replaced by the atq command.
  • -m: Send an email notification when the job has finished.
  • -r <job-number>: Cancel the job whose ID is job-number. This option works only with at, but jobs submitted with batch can also be removed. On some systems, this option has been replaced with the atrm command.


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.

Back to top


For more, consult the following man pages:

 at cron crontab

At Indiana University, for personal or departmental Linux or Unix systems support, see Get help for Linux or Unix at IU.

This is document aewo in the Knowledge Base.
Last modified on 2018-01-18 12:23:13.