While cron is used to schedule recurring tasks, the
at command is used to
schedule a one-time task at a specific time and 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.
34.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:00 a.m. If the time is already past, it is executed
at the specified time the next day.
-
midnight — Specifies 12:00 a.m.
-
noon — Specifies 12:00 p.m.
-
teatime — Specifies 4:00 p.m.
-
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 Enter, and type Ctrl-D
. Multiple commands can be specified by typing each command
followed by the Enter
key. After typing all the commands, press Enter to go to a blank line and
type Ctrl-D
. Alternatively, a shell script can be entered at the prompt,
pressing Enter 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 34.2.3, “Viewing Pending Jobs” for more
information.
Usage of the at
command can be restricted. For more information, refer to
Section 34.2.5, “Controlling Access to At and Batch” for
details.
34.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
Enter, and type
Ctrl-D
. Multiple commands can be specified by typing each
command followed by the Enter key. After typing all the
commands, press Enter to
go to a blank line and type Ctrl-D
. Alternatively, a shell script can be entered at the
prompt, pressing Enter
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 34.2.3, “Viewing Pending Jobs” for more
information.
Usage of the batch command can be restricted. For more information, refer to Section 34.2.5, “Controlling Access to At and Batch” for details.
34.2.3. Viewing Pending Jobs
To view pending at and
batch jobs, use the
atq command. The
atq command 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.
34.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 is executed.
|
Table 34.1. at and batch Command Line
Options
34.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.
34.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 15, Controlling Access to Services for details
on starting the cron service automatically at boot time.