
Cron is nice and all, but don't forget about its cousin at
.
When I first started using Linux, it was like being tossed into the deep end of the UNIX pool. You were expected to use the command line heavily along with all the standard utilities and services that came with your distribution. At lot has changed since then, and nowadays, you can use a standard Linux desktop without ever having to open a terminal or use old UNIX services. Even as a sysadmin, these days, you often are a few layers of abstraction above some of these core services.
I say all of this to point out that for us old-timers, it's easy to take for
granted that everyone around us innately knows about all the command-line
tools we use. Yet, even though I've been using Linux for 20 years, I
still learn about new (to me) command-line tools all the time. In this "Back
to Basics" article series, I plan to cover some of the command-line tools
that those new to Linux may never have used before. For those of you who are
more advanced, I'll spread out this series, so you can expect future
articles to be more technical. In this article, I describe how to use
the at
utility to schedule jobs to run at a later date.
at
vs. Cron
at
is one of those commands that isn't discussed very much. When
people talk about scheduling commands, typically cron gets the most
coverage. Cron allows you to schedule commands to be run on a periodic
basis. With cron, you can run a command as frequently as every minute or as
seldom as once a day, week, month or even year. You also can define more
sophisticated rules, so commands run, for example, every five minutes, every
weekday, every other hour and many other combinations. System administrators sometimes
will use cron to schedule a local script to collect metrics every minute or
to schedule backups.
On the other hand, although the at
command also allows you to schedule
commands, it serves a completely different purpose from cron. While cron
lets you schedule commands to run periodically, at
lets you schedule
commands that run only once at a particular time in the future. This
means that at
fills a different and usually more immediate need
from cron.
Using at
At one point, the at
command came standard on most Linux
distributions, but
these days, even on servers, you may find yourself having to
install the at
package explicitly. Once installed, the easiest
way to use at
is to type
it on the command line followed by the time you want the command to run:
$ at 18:00
The at
command also can accept a number of different time formats. For
instance, it understands AM and PM as well as words like "tomorrow", so you
could replace the above command with the identical: