Launch Workspace
Standard Cron · 5 fields · 8 Times Daily

Cron Every 3 Hours — 0 */3 * * *

Executes eight times per day on the hour: 00:00, 03:00, 06:00, 09:00, 12:00, 15:00, 18:00, and 21:00.

Dialect:
5 fields
Plain EnglishHourly Interval

“Every 3 hours, on the hour”

Runs every 3 hours, on the hour. Evaluated according to STANDARD cron specifications.

Popular Presets:

How 0 */3 * * * Works

The step increment */3 in the hour field divides the 24-hour day into 3-hour blocks starting from midnight (hour 0). Setting minute to 0 ensures single execution at the top of each scheduled hour.

Tri-hourly schedules are commonly used for mid-frequency data aggregation, search index re-indexing, queue health metrics, and temporary cache purging.

Platform Examples for 0 */3 * * *

Ready-to-use snippets for all major platforms and schedulers.

Linux / Crontab5-field POSIX cron
# /etc/cron.d/my-schedule
MAILTO="admin@example.com"
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Runs every 3 hours on the hour
0 */3 * * * www-data /usr/local/bin/my-script.sh >> /var/log/my-script.log 2>&1
Kubernetesbatch/v1 CronJob manifest
apiVersion: batch/v1
kind: CronJob
metadata:
  name: my-scheduled-job
  labels:
    app: my-scheduled-job
spec:
  schedule: "0 */3 * * *"
  timeZone: "UTC"          # requires Kubernetes v1.27+
  concurrencyPolicy: Forbid
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: job
            image: alpine:latest
            command:
            - /bin/sh
            - -c
            - echo "Job executed at $(date)"
          restartPolicy: OnFailure
GitHub Actionsworkflow schedule trigger (UTC only)
name: Scheduled Workflow

on:
  schedule:
    # Runs every 3 hours on the hour — evaluated strictly in UTC
    - cron: "0 */3 * * *"
  workflow_dispatch: # allow manual trigger

jobs:
  run-job:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Run task
        run: echo "Workflow triggered at $(date)"
Spring Boot@Scheduled — 6-field cron with seconds
@Component
public class ScheduledTask {

    private static final Logger log = LoggerFactory.getLogger(ScheduledTask.class);

    // Runs every 3 hours on the hour
    // Spring uses 6-field cron: sec min hr dom mon dow
    @Scheduled(cron = "0 0 */3 * * *", zone = "UTC")
    public void runTask() {
        log.info("Scheduled job started at: {}", LocalDateTime.now());
        // your business logic here
    }
}
AWS EventBridge6-field cron with year field
# AWS EventBridge Rule (CloudFormation)
Resources:
  ScheduledRule:
    Type: AWS::Events::Rule
    Properties:
      Name: my-scheduled-rule
      ScheduleExpression: "cron(0 */3 * * ? *)"
      State: ENABLED
      Targets:
        - Arn: !GetAtt MyLambdaFunction.Arn
          Id: LambdaTarget

Common Variations

Related expressions for similar scheduling needs.

ExpressionDescription
0 */3 * * *Every 3 hours on the hour (00:00, 03:00, 06:00, 09:00, 12:00, 15:00, 18:00, 21:00)
0 1-23/3 * * *Every 3 hours starting at 1:00 AM (01:00, 04:00, 07:00, ...)
0 2-23/3 * * *Every 3 hours starting at 2:00 AM (02:00, 05:00, 08:00, ...)
30 */3 * * *Every 3 hours at half past the hour (:30)
0 */3 * * 1-5Every 3 hours during weekdays only (Monday–Friday)

Frequently Asked Questions

Everything you need to know about Cron expressions, syntax rules, and platform nuances.

What is the Cron expression for running every 3 hours?

The standard Cron expression is "0 */3 * * *". Minute is 0, and Hour is "*/3". This triggers 8 times per day at 00:00, 03:00, 06:00, 09:00, 12:00, 15:00, 18:00, and 21:00.

How do I offset the start hour (e.g. 1 AM, 4 AM, 7 AM)?

Use the range/step syntax "0 1-23/3 * * *". This anchors at 1:00 AM and executes every 3 hours thereafter: 01:00, 04:00, 07:00, 10:00, 13:00, 16:00, 19:00, and 22:00.

What is the difference between "0 */3 * * *" and "* */3 * * *"?

"0 */3 * * *" runs once every 3 hours on the hour. If you accidentally use "* */3 * * *", it will execute every single minute during hours 0, 3, 6, 9, 12, 15, 18, and 21 (a total of 480 times a day). Always specify minute 0 for tri-hourly tasks.

How do I configure an every 3-hour job in Spring Boot?

Use 6-field cron with seconds: @Scheduled(cron = "0 0 */3 * * *", zone = "UTC").