Magento cron jobs must run continuously to handle indexing, order processing, emails, and cleanup. If cron stops running, jobs get stuck in “pending” and never finish. This breaks core functions, delays customer notifications, and can leave security tasks unexecuted.
A healthy cron heartbeat means jobs execute regularly without long gaps. Monitoring it ensures background processes remain stable and prevents silent failures.
# Check cron heartbeat
bin/magento cron:check
# Expected: "Magento cron is running"
SELECT job_code, status, scheduled_at, executed_at, finished_at
FROM cron_schedule
ORDER BY scheduled_at DESC LIMIT 5;
# Expected: jobs executed recently, no large backlog
var/log/magento.cron.log for errors or timeouts.cron_schedule rows in “pending” state and restart PHP-FPM/cron service.$ bin/magento cron:check
Magento cron is not running
# Database shows backlog
job_code status scheduled_at
sales_email pending 2025-10-01 12:00:00
# FAIL
$ bin/magento cron:check
Magento cron is running
# Database shows jobs executed recently
job_code status executed_at
sales_email success 2025-10-01 12:00:05
# PASS