Technically Speaking

The Official Bigstep Blog

 

How to Configure Cron Jobs in cPanel

Cron is a service found on all Linux distributions that allows users to schedule commands or scripts that are executed at a specified time or interval. These scheduled tasks are known as cron jobs.

Cron jobs are extremely useful and can serve a variety of purposes. For example, you can start or stop services, you can modify files or databases, or you can send notifications by email. Continue reading this blog post to find out how to setup, list, and check cron jobs in cPanel.

Anatomy of a Cron Job

The cron job syntax might seem confusing at first, but it is actually quite simple. It consists of six fields separated by spaces: the first five are used to define time intervals, while the last is the actual command to be executed. When the asterisk symbol is used in a field, it means the cron will run in all intervals of that specific field.

For example, a cron job that executes a script every hour would look like this:

0 * * * * script.sh

Let’s detail what the first five fields mean, from left to right:

  • 1st one is Minutes (0-59)
  • 2nd one is Hours (0-23, following the 24-hour format)
  • 3rd one is Day of the Month (0-31)
  • 4th one is Month (1-12)
  • 5th one is Day of the Week (0-7, Sundays can be both 0 or 7). You can also use shortcuts for the days of the week (for example Mon for Monday)

The syntax also supports ranges, lists or steps. Let’s see how that works, in a few examples.

Ranges

This cron uses a range (1-5) that will run the script every minute of every hour, only during weekdays:

* * * * 1-5 script.sh

Lists

Lists are separated by a coma. Let’s say we want our script to run every day, but only at 9:30 (9:30 AM), 10:30 (10:30 AM) and 15:30 (15:30 PM):

30 9,10,15 * * * script.sh

Steps

If we want a cron to be executed every 5 minutes, we can use a step for that purpose (by using a slash):

* /5 * * * * script.sh

We will not go into further details, but keep in mind that cron syntax is very flexible, and other shortcuts are also supported.

How to Setup Cron Jobs

Although cron jobs can be configured from the command line, it is easier to do it from the cPanel interface, especially if you have no experience in system administration. The menu is found in the Advanced section:

The top part of the interface allows you to configure an email address where the output of cron commands will be sent, if needed. Just enter the address in the Email field, then click on Update Email, or follow the instructions to redirect the output to /dev/null if you don’t want the email to be sent.

Scroll down in order to add a new cron job and you will find a very helpful interface that makes setting the time intervals a trivial task. Configure the fields with the desired values and then click on Add New Cron Job:

You will notice that cPanel includes drop-down menus with pre-defined settings for the most common tasks.

The general Common Settings drop-down menu on top can be used to execute commands twice per hour, for instance:

There is a similar menu for each field as well, here is the one for the Month field:

Once added, the cron will run automatically at the designed intervals, until you remove it.

How to List Cron Jobs

In order to list the current jobs, scroll to the bottom of the Cron Jobs interface:

You can use the buttons in the Actions column to Delete or Edit an existing cron job.

How to Check Cron Jobs

As explained above, the easiest method is to set up email notifications that will send an email with the output every time a cron job runs.

More advanced troubleshooting is also possible from the command line, if you have root access, by investigating the cron log file found at /var/log/cron.

If you don’t have shell access or administrator privileges, you can ask your hosting provider to investigate any cron issues.

Tips & Tricks for Cron Jobs

The minimum interval to run a cron job is one minute. What if you need to run a script every 30 seconds, for example? While this is not possible by default, you can use two separate crons and the Linux sleep command as a workaround:

* * * * * script.sh
* * * * * sleep 30; script.sh

While the first cron will execute your script every minute, the second one will wait 30 seconds and execute it again.

Another very important aspect to keep in mind is that cron jobs use their own PATH variable that can be different from the system PATH settings. As a result, some commands that work when executed in the terminal might not be found when included in a cron.

The safest way around this is to always use full paths in your crons, for both normal commands and scripts. The cPanel Cron Jobs interface provides full path examples for php scripts:

Conclusion

Cron is a simple but very powerful tool that allows Linux users to automate repetitive tasks. The interface provided by cPanel makes cron job management trivial even for people with no experience in system administration.

As usual, please contact us for any feedback or questions, our sysadmins are ready to help you with any issues related to cron jobs.

About the Author

Dragos Baldescu is a Level 2 Technical Support Engineer at Bigstep, passionate about Linux and testing out new technologies and solutions.

Got a question? Need advice? We're just one click away.
Sharing is caring:TwitterFacebookLinkedinPinterestEmail

Readers also enjoyed:

cPanel & WHM: Learn the Difference on Bigstep Metal Cloud

This year, in March, cPanel celebrated its 26th year of providing the graphical interface and automation tools that simplify the process of hosting a…

Top 5 Linux Shells and How to Install Them

The shell is an interactive interface that allows users to execute other commands and utilities in Linux and other UNIX-based operating systems. When…

Leave a Reply

Your email address will not be published.

* Required fields to post your comments.
Please review our Privacy Notice in order to understand how we process your personal data and what are your rights in this respect.