As an alternative to cron job scheduler, the at
command allows you to schedule a command to run once at a given time without editing a configuration file.
The only requirement consists of installing this utility and starting and enabling its execution:
# yum install at [on CentOS based systems] $ sudo apt-get install at [on Debian and derivatives]
Next, start and enable the at service at the boot time.
--------- On SystemD --------- # systemctl start atd # systemctl enable atd --------- On SysVinit --------- # service atd start # chkconfig --level 35 atd on
Once atd
is running, you can schedule any command or task as follows. We want to send 4 ping probes to www.google.com
when the next minute starts (i.e. if it’s 22:20:13, the command will be executed at 22:21:00) and report the result through an email (-m
, requires Postfix or equivalent) to the user invoking the command:
# echo "ping -c 4 www.google.com" | at -m now + 1 minute
If you choose to not use the -m
option, the command will be executed but nothing will be printed to standard output. You can, however, choose to redirect the output to a file instead.
In addition, please note that at
not only allows the following fixed times: now, noon (12:00), and midnight (00:00), but also custom 2-digit (representing hours) and 4-digit times (hours and minutes).
For example,
To run updatedb
at 11 pm today (or tomorrow if the current date is greater than 11 pm), do:
# echo "updatedb" | at -m 23
To shutdown the system at 23:55 today (same criteria as in the previous example applies):
# echo "shutdown -h now" | at -m 23:55
You can also delay the execution by minutes, hours, days, weeks, months, or years using the +
sign and the desired time specification as in the first example.
Time specifications are subject to the POSIX standard.
Summary
As a rule of thumb, use at instead of cron job scheduler whenever you want to run a command or execute a given task at a well-defined time only once. For other scenarios, use cron.
Next, we shall cover how to encrypt tar archive files using openssl, till then stay connected to Tecmint.