HomeLinuxScheduling One-Time Jobs in Linux using “at” Command

Scheduling One-Time Jobs in Linux using “at” Command

one time job scheduling

In Linux, job scheduling is a pivotal aspect of system automation. Embarking on the exploration of scheduling one-time tasks in Linux, I delved into the robust capabilities of the “at” command. The “at” command in Linux is a powerful and flexible tool for scheduling one-time jobs or tasks to be executed at a specific time in the future. Unlike the routine nature of cron jobs, “at” offers the flexibility to schedule a task for a single execution at a specified future time. This articles guides through the installation, usage, and nuances of the “at” command to schedule one-time jobs in Linux system.

1. Installation


Ensure that the “at” package is installed on your Linux system; you can achieve this by using the package manager relevant to your distribution.

# For Debian/Ubuntu
sudo apt-get install at

# For Red Hat/CentOS
sudo yum install at

2.Checking Service Status:

Firstly, Confirm that the “atd” (at daemon) service is running, as this service is responsible for executing commands scheduled with “at”.

[root@ervintest ~]# systemctl start atd
[root@ervintest ~]# systemctl status atd
at daemon

3. Scheduling a One-Time Job

The syntax of the “at” command is :

at [OPTIONS] TIME

In the context of scheduling tasks using the at command in Linux, moreover,we can use 3 different time formats.

1. Relative Time:
  • Definition: Relative time refers to a time interval expressed in relation to the current time or some reference point.
  • Usage in at Command: When scheduling jobs with the at command, you can specify a relative time. For example, you can schedule a job to run in 2 hours or at midnight.
[root@ervintest ~]# at now + 2 hours
at> your_command_here
at> Ctrl+D
relative time

2. Absolute Time:
  • Definition: Absolute time refers to a specific point in time, usually defined by a date and a specific time.
  • Usage in at Command: You can schedule jobs at an absolute time by providing the exact date and time when you want the job to be executed.
[root@ervintest ~]# at 3:00pm tomorrow
at> your_command_here
at> Ctrl+D
absolute time

3.Date and Time:
  • Definition: Date and time collectively represent a specific point in the calendar, combining the day, month, year, and the time within that day.
  • Usage in at Command: When scheduling jobs, you can provide both the date and time to precisely specify when the job should run.
[root@ervintest ~]# at 2024-01-09 10:30am
at> your_command_here
at> Ctrl+D
date and time

Understanding the distinctions between relative time, absolute time, and specifying both date and time is crucial when working with time-based scheduling tools like the at command. These concepts allow users to flexibly and accurately schedule tasks according to their specific requirements.

List pending jobs in the at queue:

[root@ervintest ~]# at -l

This command will display a list of the user’s pending at jobs, showing the job number, scheduled execution time, and the date it was added to the queue.

listing jobs

Remove a specific job from the at queue:

atrm <job_number>

Replace <job_number> with the actual job number obtained from the at -l command. This will remove the specified job from the queue.

removing a job

The at command provides a convenient way to schedule one-time jobs in Linux, allowing users to automate tasks and execute commands at specified times. Understanding its basic syntax and options empowers users to efficiently manage scheduled jobs.

Examples

Example 1: Running a Script at a Specific Time

Suppose we have a script named backup.sh that we want to run at 10:30 PM tonight. We can schedule this by using the at command as follows:

[root@ervintest ~]# at 22:30
Example 2: Sending an Email at a Future Date

If we need to send an email using a command-line email tool like mail at a specific date and time, we can do so with at. For example, to send an email at 8:00 AM on February 10th, we can use:

[root@ervintest ~]# at 08:00 Feb 10
Example 3: Restarting a Service at a Scheduled Time

If we need to restart a service at a specific time, we can use at to do so. For instance, to restart the Apache web server at 2:00 AM, use:

[root@ervintest ~]# at 02:00
Scroll to Top