Automating Task with Cronjob

How can we help?
< All Topics
Print

Automating Task with Cronjob

So many routine tasks on a system that need to be done every day. Hence, it’s difficult to remember everything that needs to be done on time.

However,  some of the scenarios for executing routine tasks on a system includes:

  1. Firstly, backing up websites or web applications, databases, or logs periodically
  2. Secondly, updating software, system packages, or performing system maintenance regularly.
  3. Then, sending reports or notifications periodically, and many other examples.

One of the tools that can be used for this is Cron, which allows users to schedule and execute tasks automatically based on specific times or intervals.

In the following discussion, you’ll learn more about the definition, function, and implementation of Cron, as well as some shortcuts from the cron-expression called “Special Syntax” that can accelerate the process of scheduling tasks and make it easier to understand.

What is Cron, Crontab, and Cronjob

In short, Cron is a popular and effective tool for scheduling tasks or scripts automatically on Unix-Like operating systems like Linux and MacOS. In addition, the name “Cron” comes from the Greek word “Chron”, meaning “time”. This tool works using the command-line interface and can execute tasks or scripts on a scheduled interval such as hour, day, week, month, and so on.

In addition, cron is activated through the Crontab file (Cron Table), which is a simple and easy-to-read text file containing a set of shell commands to be executed on a schedule that has been defined. This set of shell commands is known as Cronjob, and each user profile on the system can have their own Crontab to schedule specific tasks.

Advantages of Task Automation Using Cron

By automating tasks using Cron, some of the advantages that can be gained include:

  • Increased productivity
    It allows users to automate recurring tasks, allowing time and effort to be used efficiently for other important tasks.
  • Increased accuracy
    By automating tasks using Cron, users can minimize human errors and ensure that tasks are executed consistently and reliably.
  • Flexibility
    It is also has high flexibility, allowing users to determine task schedules at specific times, days, and with various other parameters.
  • Cost savings
    Cron eliminates the need for manual intervention in many routine tasks, reducing labor costs and increasing efficiency.

Initial Setup

Before setting up Crontab, ensure that the shell script or command to be executed runs normally.

  • Firstly, try running the command normally (directly in the terminal)

    # crontab -e
     
  • Next, you can now access the Crontab file by running the command crontab -e
  • Then, if you’ve just opened the crontab file on this user profile, you’ll be shown text editor options to choose from. We’ll use the nano editor because it’s relatively easier to use.

↳ After that, you’ll be taken to a new Crontab file that contains some instructions on how to use it.

 

Crontab Command Format

Each line in Crontab represents a Cronjob consisting of two components: time/schedule and a shell script or command that will be executed at that schedule. We can see this structure in the points below.

 

Special Character and Special Syntax in Crontab

Additionally, there are several Special Characters and Special Syntax in the cron-expression that we can use to modify the schedule more specifically. The Special Syntax itself is essentially a shortcut for a sequence of numeric times already in Crontab.

Or for easier reference, let’s check the table below:

Special Character Usage
* Wildcard variable representing “all” expression. It will execute all allowed values within that time unit. For example, for the day of the month, it will execute all values (1 - 31), for the month (1 - 12) and so on.
, Converts values into a list. This way, we can execute tasks only at specific hours specified in that list.
Represents a range of values. So, if we want to execute a task in a specified range, we can use this hyphen. 
/ Represents incremental. For example, if we want to schedule a task to run every 30 minutes, we can use the format: */30 * * * * command.
Special Syntax Usage
@hourly A cron shortcut used to run a job every hour at minute 0 (e.g., 1:00, 2:00, 3:00).
(0 * * * *
@daily A cron shortcut that runs a job every day at 00:00.
(0 0 * * *)
@weekly A cron shortcut that runs a job every week on Sunday at 00:00.
(0 0 * * 0
)
@monthly A cron shortcut that runs a job every month on the 1st at 00:00.
(0 0 1 * *)
@yearly A cron shortcut that runs a job every year on January 1st at 00:00.
(0 0 1 1 *)

If you want to determine if your Cronjob is valid, Cronitor offers a practical cron-expression editor called “Crontab Guru” that you can use to learn and visualize cron-expressions more quickly according to your needs, especially if you’re new to using cron-jobs or need to create complex schedules.

In addition, you can visit the Crontab Guru website at https://crontab.guru/ and enter your cron-expression in the input box. Crontab Guru will display a simple English description and a graphical representation of your cron job schedule.

 

Examples of Cronjob Implementation

So firstly, let’s schedule an rsync command to back up website assets from the main folder to the backup folder every day at 1:30 AM. For this, we can use the following cron-expression:


30 1 * * * rsync -a /var/www/cloudforindonesia/galerifashion/ /etc/backup-website/cloudforindonesia/galerifashion/
     

01:30 can be represented by the numbers 30 and 1.

Meanwhile, the three asterisks following it, representing “all,” will execute every allowed value within that time period. Or in short, it will execute every day.


Alternatively, we can also run a series of commands that we’ve written in a .sh file.

So, I have a file named backup-website.sh, which contains some simple commands like backing up the website, backing up the MariaDB database, and restarting the NGINX and the MariaDB service. I also want to schedule this task every day at 1:30 AM.

Then to schedule the task, we can use the following cron-expression:


30 1 * * * sh /etc/backup-website/backup-website.sh

Easy, right? So, if we want to run a task and want it scheduled, we just need to set up the cronjob and set the schedule time.

 

Additional Information

  • If the server is down or not available at the scheduled cron time, the task will wait until the next scheduled time to run.
  • To view the list of active cronjobs, simply type “crontab -l” in the terminal.
  • To delete the crontab, you can use “crontab -r” (without confirmation) or “crontab -ri” (with confirmation).

 

Conclusion

In conclusion, Cron is an incredibly useful tool for handling recurring tasks in Unix-based systems. By automating these tasks, you can save time, reduce errors, and boost productivity. Ultimately, this leads to better outcomes and cost savings.

Running scripts on your system is cool but running them automatically is even cooler!

Visit the Cloud Raya Knowledge Base for more tutorial articles. Alternatively, you can also check out our Youtube channel for video tutorials you need.

Table of Contents

Ready, Set, Cloud

Ready, Set, Cloud