Red Hat Enterprise Linux 3: System Administration Guide
Prev | Chapter 37. Automated Tasks | Next

# 37.2. At and Batch

While cron is used to schedule recurring tasks, the `at` command is used to schedule a one-time task at a specific time. The `batch` command is used to schedule a one-time task to be executed when the systems load average drops below 0.8.

To use `at` or `batch` the `at` RPM package must be installed, and the `atd` service must be running. To determine if the package is installed, use the `rpm -q at` command. To determine if the service is running, use the command `/sbin/service atd status`.

## 37.2.1. Configuring At Jobs

To schedule a one-time job at a specific time, type the command `at `time``, where ``time`` is the time to execute the command.

The argument `time` can be one of the following:

- HH:MM format — For example, 04:00 specifies 4:00AM. If the time is already past, it is executed at the specified time the next day.

- midnight — Specifies 12:00AM.

- noon — Specifies 12:00PM.

- teatime — Specifies 4:00PM.

- month-name day year format — For example, January 15 2002 specifies the 15th day of January in the year 2002. The year is optional.

- MMDDYY, MM/DD/YY, or MM.DD.YY formats — For example, 011502 for the 15th day of January in the year 2002.

- now + time — time is in minutes, hours, days, or weeks. For example, now + 5 days specifies that the command should be executed at the same time five days from now.

The time must be specified first, followed by the optional date. For more information about the time format, read the `/usr/share/doc/at-`<version>`/timespec` text file.

After typing the `at` command with the time argument, the `at>` prompt is displayed. Type the command to execute, press <KEYCAP >[Enter]</KEYCAP >, and type Ctrl-D. More than one command can be specified by typing each command followed by the <KEYCAP >[Enter]</KEYCAP > key. After typing all the commands, press <KEYCAP >[Enter]</KEYCAP > to go to a blank line and type Ctrl-D. Alternatively, a shell script can be entered at the prompt, pressing <KEYCAP >[Enter]</KEYCAP > after each line in the script, and typing Ctrl-D on a blank line to exit. If a script is entered, the shell used is the shell set in the user's `SHELL` environment, the user's login shell, or `/bin/sh` (whichever is found first).

If the set of commands or script tries to display information to standard out, the output is emailed to the user.

Use the command `atq` to view pending jobs. Refer to Section 37.2.3 Viewing Pending Jobs for more information.

Usage of the `at` command can be restricted. Refer to Section 37.2.5 Controlling Access to At and Batch for details.

## 37.2.2. Configuring Batch Jobs

To execute a one-time task when the load average is below 0.8, use the `batch` command.

After typing the `batch` command, the `at>` prompt is displayed. Type the command to execute, press <KEYCAP >[Enter]</KEYCAP >, and type Ctrl-D. More than one command can be specified by typing each command followed by the <KEYCAP >[Enter]</KEYCAP > key. After typing all the commands, press <KEYCAP >[Enter]</KEYCAP > to go to a blank line and type Ctrl-D. Alternatively, a shell script can be entered at the prompt, pressing <KEYCAP >[Enter]</KEYCAP > after each line in the script, and typing Ctrl-D on a blank line to exit. If a script is entered, the shell used is the shell set in the user's `SHELL` environment, the user's login shell, or `/bin/sh` (whichever is found first). As soon as the load average is below 0.8, the set of commands or script is executed.

If the set of commands or script tries to display information to standard out, the output is emailed to the user.

Use the command `atq` to view pending jobs. Refer to Section 37.2.3 Viewing Pending Jobs for more information.

Usage of the `batch` command can be restricted. Refer to Section 37.2.5 Controlling Access to At and Batch for details.

## 37.2.3. Viewing Pending Jobs

To view pending `at` and `batch` jobs, use the `atq` command. It displays a list of pending jobs, with each job on a line. Each line follows the job number, date, hour, job class, and username format. Users can only view their own jobs. If the root user executes the `atq` command, all jobs for all users are displayed.

## 37.2.4. Additional Command Line Options

Additional command line options for `at` and `batch` include:

Option | Description
--- | ---
`-f` | Read the commands or shell script from a file instead of specifying them at the prompt.
`-m` | Send email to the user when the job has been completed.
`-v` | Display the time that the job will be executed.

Table 37-1. `at` and `batch` Command Line Options

## 37.2.5. Controlling Access to At and Batch

The `/etc/at.allow` and `/etc/at.deny` files can be used to restrict access to the `at` and `batch` commands. The format of both access control files is one username on each line. Whitespace is not permitted in either file. The `at` daemon (`atd`) does not have to be restarted if the access control files are modified. The access control files are read each time a user tries to execute the `at` or `batch` commands.

The root user can always execute `at` and `batch` commands, regardless of the access control files.

If the file `at.allow` exists, only users listed in it are allowed to use `at` or `batch`, and the `at.deny` file is ignored.

If `at.allow` does not exist, users listed in `at.deny` are not allowed to use `at` or `batch`.

## 37.2.6. Starting and Stopping the Service

To start the `at` service, use the command `/sbin/service atd start`. To stop the service, use the command `/sbin/service atd stop`. It is recommended that you start the service at boot time. Refer to Chapter 21 Controlling Access to Services for details on starting the cron service automatically at boot time.

Prev | Home | Next
Automated Tasks | Up | Additional Resources