Posted on
Software

at: Schedule one-time tasks

Author
  • User
    Linux Bash
    Posts by this author
    Posts by this author

Scheduling One-Time Tasks in Linux with 'at'

In the world of Linux, efficiently scheduling tasks is key to managing workloads and automating processes. While cron is widely known for handling repetitive tasks, Linux also provides a powerful utility for scheduling one-time jobs: at. This tool allows you to schedule jobs that run at a specific time in the future, making it perfect for one-off tasks you don’t want to keep on your personal to-do list. Let's explore how to use at, and how you can install it on different Linux distributions.

Installing at

Before you dive into scheduling tasks, you need to ensure that at is installed on your system. The installation process varies depending on the package manager of your Linux distribution:

Debian/Ubuntu (using apt)

For distributions like Debian, Ubuntu, and derivatives, install at using apt:

sudo apt update
sudo apt install at

Fedora (using dnf)

If you're running a Fedora system, you'll use dnf to install at:

sudo dnf install at

openSUSE (using zypper)

On openSUSE, at can be installed using zypper:

sudo zypper install at

Enabling the at Service

After installation, the atd service, which handles the execution of scheduled tasks, needs to be started and enabled to run at boot:

sudo systemctl enable --now atd

This command ensures that the at daemon is active and running, ready to handle your scheduled tasks.

Using at to Schedule Tasks

Scheduling tasks with at is straightforward. Here is the basic syntax:

at [time] [day]

Where [time] is when you want the job to run, and [day] (if specified) tells at which day the job should be executed.

Examples

  1. Schedule a Job for Later Today:

    To run a script at 4:30 PM today:

    echo "/path/to/script.sh" | at 16:30
    
  2. Schedule a Job for a Specific Date:

    To backup your home directory on July 1st at 1:00 AM:

    echo "tar czf /backup/home-$(date +%Y%m%d).tar.gz /home" | at 01:00 Jul 1
    
  3. Using at Now + Time Increment:

    To reboot your system in 5 minutes:

    echo "sudo reboot" | at now + 5 minutes
    

List and Remove Jobs

To see a list of scheduled tasks:

atq

To remove a specific job, use the job number provided by atq:

atrm [job number]

Example:

atrm 3

Conclusion

The at command is a reliable tool for scheduling one-time tasks, perfect for when you need to run jobs in the future but don't require the periodicity of cron. By understanding how to use at, you can more effectively manage automation and maintenance tasks on your Linux system, helping maintain order and efficiency.

Remember, regardless of your Linux flavor, at is generally available and ready to help streamline your system management tasks. Happy scheduling!

Further Reading

For further reading related to the at command and task scheduling in Linux, consider checking out the following resources:

  1. Cron and At - Automating Tasks:

    • Provides a detailed guide on task automation including comparisons and use cases for cron and at.
    • Link to read more
  2. Linux Journal - Using ‘at’ to Schedule Tasks:

    • An article that dives deeper into practical examples and troubleshooting common issues with the at command.
    • Link to read more
  3. Red Hat Enterprise Linux Documentation - at, batch, atq, atrm Commands:

    • Official documentation covering detailed syntax, options, and configurations for scheduling tasks using at.
    • Link to read more
  4. Ubuntu Community Help Wiki - Task Scheduling:

    • Community-maintained guide that includes how to use at for one-time tasks along with other scheduling utilities.
    • Link to read more
  5. Beginner’s Guide to Using ‘at’ and ‘cron’ for Task Scheduling in Linux:

    • A helpful tutorial aimed at beginners to understand task scheduling basics in Linux.
    • Link to read more

Each link provides additional information and practical tips that can enhance your understanding and ability to effectively use Linux's task scheduling capabilities.