How to Schedule Tasks on Linux

Installing At tool or employing Cron Daemon will let you desirably schedule tasks in Linux. While Cron helps in running any task on a regular basis, the At tool efficiently executes any action once.

Users of UNIX-based operating systems often tend to perform a specific task repeatedly. In such a scenario, taking the manual approach every time is undoubtedly inefficient in every manner. Luckily, there exists a promising way out. 

The UNIX OS bags amazing task schedulers. These schedulers act as some sort of timer that makes the system perform any predefined task. When we talk about Linux, there are two basic yet robust tools to schedule tasks in the most user efficient manner, namely Cron Daemon and the At tool.

In this article, we’ll walk you through the methods of using both the tools and schedule a task in Linux.

Using Cron Daemon to Schedule Tasks in Linux

Cron or the Cron Daemon is a great way to schedule and run several tasks at specific times. Pretty similar to the task scheduler in Windows, you can add desired actions on the Crontab and let Cron automatically run those.

1. Launching and Getting Started with Crontab

1. The first thing that you’ll need to do is launch the Terminal. You can either use the Ctrl+Alt+T key combination or look for the Terminal in the Linux application menu.

2. Open your user account’s crontab with system permissions by running the following command:

$ sudo crontab -e

In case the Linux distribution system you’re working on doesn’t use sudo, run the following command:

su -c “crontab -e”

3. Once done, you’ll be asked to select an editor. It is recommended to go with Nano as it is an easy one to get started with. Do that by typing the number designated against the option that says Nano. However, there are other advanced editors to choose from, which advanced users generally prefer.

Schedule Tasks on Linux

You’ll then notice that you’re inside the Nano text editor, and the same can be identified by the availability of “GNU nano” at the top of the Terminal. In case you don’t see “GNU nano”, the system might have launched crontab in the vi text editor.

allowed values

Quitting vi text editor is pretty simple. Type “quit” and press “Enter”. After that, run the following command:

$ export Editor=nano

Finally, run the following command:

crontab -e
all user accounts

2. Adding New Tasks to the Crontab

Now that you’re done setting up the Crontab, the next thing to do is add and schedule various tasks on it. You can simply use the arrow keys to navigate to the very bottom of the file, where new tasks need to get added. 

Usually, in Crontab, the lines are written in a specific sequence. The sequence also bears a set of acceptable values, which ultimately sets the scheduling period. The sequence we’re talking about looks like:

minute(0-59) hour (0-23) day (1-31) month (1-12) weekday (0-6) command

The asterisk (*) character is used to match the values that we tend to input in the sequence. For instance, using the asterisk character for days will ensure that the command runs every day, and the same goes for months, weekdays, minutes, and hours.

3. Saving the File in Crontab

Saving the Crontab file in Nano is very straightforward. First, press the Ctrl+O key combination, followed by hitting the “Enter” button. The message stating crontab: installing new crontab indicated that the crontab file you intended to run had been successfully installed. Finally, use the Ctrl+X shortcut to close the Nano editor.

2.  Using At Tool to Schedule Tasks in Linux

Although Crontab is a promising way to schedule various tasks in Linux, there is no denying the fact that the method is only suitable for running a script at any fixed interval. The At tool, on the other hand, offers a more easy and efficient approach.

1. Getting the At Tool Installed

Unlike Crontab, At tool isn’t something that is readily installed on any Linux system. With that being said, you’ll have to run a specific command and get the At tool installed for scheduling tasks thereafter.

a. For any Ubuntu/Debian and derivatives, run the following command:

$ sudo apt install -y at
sudo apt install

b. For any RHEL/CentOS and derivatives, run the following command

$ yum install at

c. For any Arch Linux and derivatives, run the following command

$ sudo Pacman -S at

d. For any Fedora and derivatives, run the following command

$ sudo dnf install at

2. Enabling the Daemon

Once you’re done installing the At tool on your system, the next thing to do is enable the corresponding daemon. Run the following command:

$ sudo system ctl enable --now atd.service
enable atd

3. Defining the Interval to Schedule Tasks on Linux

For working with the At tool, you’ll have to define the interval. The interval determines the period for which you wish to run any specific task. To understand the situation better, let’s have a look at an example.

In case you wish to execute any specific command after 6 hours, make use of the following command:

$ at now + 6 hour

To run any task at 9 P.M., nine days from now, run the following command:

$ at 9pm + 9 days

If you wish to list all the pending At jobs, run the following commands:

$ atq

Talking about the output, it usually lists all the jobs with a particular reference number. It is generally located at the very left column. For deleting any queued job, use the following command together with the associated reference number.

$ atrm <reference_number>
Schedule Tasks on Linux

Some Other Examples of At Codes

$ at now will execute Immediately

$ at now + 20 minutes will execute in 20 minutes from the current time

$ at now + 9 hours will execute in 9 hours from the current time

$ at now + 5 days will execute in 5 days from the current time

$ at midnight will execute at midnight (today or tomorrow)

$ at now next hour will execute exactly 60 minutes from now

$ at now next day will execute at the same time next day

$ at 18:00 will execute at 6:00 p.m. tomorrow

$ at 8:45 p.m. will execute 8:45 p.m. (today or tomorrow, if time has passed 8:45 p.m.)

There you’ve it, two easy-to-use and very versatile methods for scheduling tasks and running them desirably in Linux.

If this guide helped you, please share it.

Leave a Reply
Related Posts