Zactonz Cron Doctor

v1.0.0

See whether your cron jobs really run, and fix the ones that do not.

cPanel 102+ (Jupiter)Root to installPHP 7.4+ Updated 30 Sep 2026

How to use

Open Cron Doctor under Advanced in cPanel. The dashboard lists every cron job on the account, whatever created it, along with anything Cron Doctor has found.

Monitor a job#

Press Monitor next to a job. Cron Doctor stores the original crontab line, moves the command into the account's own directory and replaces the command in the crontab with a call to its runner. The schedule is left exactly as it was.

From the next scheduled run onwards the job page shows when it ran, how long it took, the exit code and whatever it printed.

Nothing else about the job changes, with three exceptions:

  1. Overlapping runs are skipped. Cron will happily start a second copy of a job while the first is still running. A monitored job takes a lock first, and a run that cannot take it is recorded as skipped rather than started. This can be set back to "let both run" per job.
  2. Cron email arrives only on failure. A monitored job prints nothing when it succeeds and prints its captured output when it fails, so you get mail when something is wrong instead of after every run.
  3. A job stopped at a time limit exits 124, following the convention of the timeout command. Otherwise the job's own exit code is passed through untouched.

A job whose command already ends in >/dev/null 2>&1 keeps producing no output, so monitoring it changes nothing about what is mailed. It still gains an exit code, a duration and overdue detection.

Stop monitoring#

Stop monitoring on the job page puts the original command back and forgets the recorded runs. If the schedule was changed from cPanel's Cron Jobs page in the meantime, the current schedule is kept — only the command is restored.

Recover discarded output#

A job ending in >/dev/null 2>&1 throws away its error messages along with everything else. Once a job is monitored, Capture the output removes that redirection so Cron Doctor can keep it.

This is only offered when the trailing redirection can be shown to be safe to remove: the command is tokenised with a quote-aware scanner, the file descriptor assignments are simulated in order, and only redirections to /dev/null at the very end of the command are considered. A redirection inside quotes, or a command with an unbalanced quote, is never touched. Removing it changes the stored command only — the crontab is not modified at all.

Fix the PHP path#

Where a job runs php or /usr/bin/php, Cron Doctor reads the PHP version cPanel has assigned to the site the script belongs to and offers Use the right PHP, which switches the job to that EasyApache binary.

This matters more than it sounds. On a normal cPanel server /usr/bin/php is not the CLI binary at all — it is php-cgi, which behaves differently and may be a different version from the one the website runs.

For a job that is already monitored the fix changes only the stored command and never touches the crontab.

Set a time limit#

Time limits are off by default, because adding one changes behaviour: a job that used to run for an hour would start being killed.

Set one on the job page and the runner stops the job when it is reached, sending SIGTERM and then SIGKILL five seconds later, and records the run with exit code 124. Where the server has timeout or setsid, the whole process group is stopped, so background work the job started goes with it.

Turn on alerts#

Put an address in Settings › Alerts and Cron Doctor adds one line to the crontab that checks every fifteen minutes and mails you when a monitored job fails or has not run when it should have. It also tells you when a job recovers.

Clearing the address removes that line again. A reminder interval controls how long to wait before repeating an alert for the same problem; the default is a day.

Failures also reach you through cron's own email whenever a job prints something. Only Cron Doctor can tell you that a job did not run at all.

If something goes wrong#

Cron Doctor saves a copy of the crontab before every change it makes and keeps the newest thirty, listed under Settings › Crontab backups with a one-click restore. Settings › Recent activity records every change it has made on the account.