Cron every 30 minutes

April 17, 2021 No comments crontab Scheduler Job Quartz Spring

1. Introduction

The cron expression is used to run scheduled tasks. In this short article, we are going to present how to create a cron expression that will be used to run jobs every 30 minutes.

2. Cron expression every 30 minutes for crontab

In Linux operation systems we have special file crontab, that contains instructions for cron jobs. It uses six fields separated by a space (cron expression) and a command that needs to be run. The cron expression for crontab daemons that execute task every 30 minutes looks like the following:


We can break down the expression into the following fields:
  1. */30 - means every 30 minutes,
  2. * - every hour,
  3. * - every day of the month,
  4. * - every month,
  5. * - every day of the week.

Example crontabs:

Run PHP script every 30 minutes:
*/30 * * * * /usr/bin/php /home/username/public_html/cron.php >/dev/null 2>&1

Create MySQL dump every 30 minutes:
*/30 * * * * mysqldump -u root -pPASSWORD database > /root/db.sql >/dev/null 2>&1

Run bash script every 30 minutes:
*/30 * * * * /bin/bash /home/username/backup.sh >/dev/null 2>&1

3. Cron expression every 30 minutes for Spring Scheduler

In Spring scheduler a cron expression contains six sequential fields: - second, - minute, - hour, - day of the month, - month, -day(s) of the week. The cron expression use to run tasks in 30-minute intervals for Spring Scheduler looks like the following:


Let's break down the expression into separate components:
  1. 0 - at second :00,
  2. 0/30 - every 30 minutes starting at minute :00,
  3. * - every hour,
  4. * - every day,
  5. * - every month,
  6. ? - any day of the week.

Example Spring scheduler configuration that executes task every 30 minutes could have the following structure:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


@Component
public class MyScheduler {

    @Scheduled(cron = "0 0/30 * * * *")
    public void doSomething() {
        // this code will be executed every 30 minutes
    }

}

4. Cron expression every 30 minutes for Quartz

The Quartz project is a Java library responsible for task scheduling. Quartz in comparison to Spring scheduler has the additional parameter in cron expression that stands for the year.


The following snippet creates a simple cron scheduler using Quartz library:

JobDetail job = newJob(SimpleJob.class)
    .withIdentity("job1", "group1")
    .build();

CronTrigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .withSchedule(cronSchedule("0 0/30 0 ? * * *"))
    .build();

sched.scheduleJob(job, trigger);

5. Conclusion

In this article we presented quick tip for creating cron expression that executes specific task every 30 minute. We created ready to copy/paste snippets for Spring applications, Quartz library, and linux crontab.
{{ message }}

{{ 'Comments are closed.' | trans }}