Guide

Drupal Cron Not Running: How to Detect and Fix It

Drupal cron handles search indexing, queue processing, cache expiration, and module maintenance. When it stops, the site still loads - but everything running in the background breaks.

How Drupal cron works

Drupal’s cron system triggers hook_cron() implementations across all modules. By default, Drupal’s automated cron runs on page requests (like WordPress). Most production sites disable this and use an external trigger via the cron URL or drush cron.

Queue workers process items from the Queue API during cron. If cron stops, queues stop processing.

Why Drupal cron not running is hard to detect

  • Automated cron disabled - Set in settings.php or admin UI, external cron never configured.
  • External cron URL changed - After a site rebuild, the cron key changes. The external service still pings the old URL.
  • drush cron failing silently - A system cron runs drush cron but drush exits with an error nobody checks.
  • Status Report ignored - Drupal’s admin Status Report shows “Cron has not run recently” but nobody checks it regularly.

What breaks when Drupal cron stops

  • Search index becomes stale - New content doesn’t appear in search results.
  • Queue items accumulate - Emails, notifications, and batch operations sit unprocessed.
  • Cache not cleared - Expired cache entries persist, serving stale content.
  • Module maintenance skipped - Update checks, log rotation, and cleanup tasks don’t run.

How to check Drupal cron status

drush cron:run --verbose
drush core:status --field=cron-last

This tells you the current state. But it doesn’t tell you if cron was running last week, or alert you when it stops.

Monitoring Drupal cron from logs

Logystera’s Drupal module captures every cron execution as a structured event - which hooks ran, how long each took, whether any failed. The processor derives metrics: total runs, average duration, time since last execution.

A rule monitors the gap: “Alert when Drupal cron has not run in 4 hours.” You know immediately - not when a developer happens to check the Status Report.

Real example: LDAP sync queue stuck for 2 months

A university Drupal site used LDAP for authentication with a queue-based sync process. After a platform upgrade, automated cron was disabled and the replacement cron job excluded queue processing. The LDAP sync queue accumulated 12,000 items over 2 months. New staff accounts were created but permissions were never synced. Users could log in but saw blank dashboards.

With Logystera, the queue depth spike and missing cron executions would have triggered an alert within hours.

Your logs already know

Drupal cron not running is silent, gradual, and damaging. Your logs record every execution - or the absence of one.

Logystera doesn’t guess. It derives truth from logs.

{% set related = [{"href": "/guides/drupal/queue-not-processing", "title": "Drupal Queue Not Processing"}, {"href": "/guides/wordpress/cron-not-running", "title": "WordPress Cron Not Running"}, {"href": "/guides/log-based-monitoring", "title": "Log-Based Monitoring"}] %}

Related Logystera content

Frequently asked questions

Does Drupal core need cron to function?

Yes — and more than WordPress does. Drupal cron drives search indexing, node-revision pruning, comment status updates, queue processing, update.module checks, and many contributed-module background tasks. A Drupal site with cron stopped degrades faster and more visibly than a WordPress site with the same problem.

What's the difference between drush cron and Drupal's automated cron?

Drush cron is the recommended way to invoke cron — it runs as a CLI process with full memory and timeout, rather than being constrained by the web request lifecycle. Drupal's "automated cron" core module triggers cron during page requests, which is fragile (similar to WordPress wp-cron). Always use drush cron via system cron in production.

How often should Drupal cron run?

Hourly at minimum, every 15-30 minutes for active sites with queue-based workflows. The exact frequency depends on which contributed modules you run — check what cron-driven work your site needs to do.

Why does cron sometimes hang on Drupal?

Most often a hung queue worker — a queue item that throws an unhandled exception or sits in a long-running operation. Drupal will block subsequent cron runs until the previous one completes. See the related queue-not-processing guide for diagnosis.

See what's actually happening in your Drupal system

Connect your site. Logystera starts monitoring within minutes.

Logystera Logystera
Monitoring for WordPress and Drupal sites. Install a plugin or module to catch silent failures — cron stalls, failed emails, login attacks, PHP errors — before users report them.
Company
Copyright © 2026 Logystera. All rights reserved.