Select your language

Cron Job Not Running? Common Causes and Fixes

If your cron job is not running, you are not alone. This is one of the most common issues on Linux systems. Most causes fall into a handful of categories — and all are easy to debug once you know where to look.

Common Causes

📝

Incorrect Cron Syntax

A small mistake in the schedule expression silently prevents execution. Even a missing space or wrong field count will stop a job from running.

🔐

Missing Permissions

The script may not have execution permissions, or the cron user may lack access to required files or directories.

🌍

Environment Differences

Cron runs with a minimal environment — no $PATH, no aliases, no .bashrc. Commands that work in a shell often fail silently in cron.

📭

Output Not Captured

Cron discards stdout and stderr by default. Without explicit log redirection, errors are completely invisible.

🔄

Cron Daemon Not Running

On some systems the cron daemon itself may be stopped or disabled — causing all jobs to silently not execute.

🕐

Timezone Issues

Cron uses the system timezone. If your server runs in UTC, schedules may fire at unexpected local times.

How to debug

1. Check if the cron daemon is running

systemctl status cron        # Debian/Ubuntu
systemctl status crond       # RHEL/CentOS/Fedora

2. View recent cron log entries

grep CRON /var/log/syslog | tail -30
# or on systems using journald:
journalctl -u cron --since "1 hour ago"

3. Verify your crontab

crontab -l               # current user
sudo crontab -l -u root  # root crontab
ls /etc/cron.d/          # system-wide entries

4. Check script permissions

ls -la /path/to/your/script.sh
chmod +x /path/to/your/script.sh

5. Test with cron's limited environment

env -i HOME=/root SHELL=/bin/bash \
  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
  /bin/bash -c 'your-command-here'

6. Capture output in your crontab entry

# Append stdout and stderr to a log file:
* * * * * /path/to/script.sh >> /var/log/myjob.log 2>&1

Prevent future issues with monitoring

Manual debugging is time-consuming. A cron monitoring tool gives you execution history, output logs and failure alerts automatically — so you know instantly when something goes wrong, without SSH access.

📋

Execution History

Every run recorded with exit code, duration and full output. No more grepping logs manually.

🔔

Instant Alerts

Email notification the moment a job fails. Know about issues before they cause problems.

🖥️

Multi-Server Overview

All your cron jobs across every server in one dashboard. No SSH required to check status.

Start Monitoring Your Cron Jobs

CronManager is free, open source and self-hosted. Deploy in minutes with Docker.

Install with Docker →