Cron job not running
When a cron job 'doesn't run', it's almost always one of a short list of causes, and the reason it's hard to spot is that cron runs with a stripped-down environment and throws away output by default, so failures happen silently. Check the schedule, the environment, and where the output goes before assuming cron itself is broken.
What it means
cron reads each crontab and runs commands when the five time fields match. It runs them with a minimal environment (a short PATH, no profile sourced) and mails any output to the user, which goes nowhere if mail isn't set up. So a job can be 'running' and failing instantly because a command isn't on PATH, or never matching because a field is wrong.
Most common causes
- Wrong schedule fields. A misread of the five fields (minute hour day-of-month month day-of-week) means it fires at the wrong time or never. Re-check each field against the time you want.
- Missing final newline. Many cron implementations ignore the last line if the crontab doesn't end in a newline, so the job silently never loads.
- Minimal environment / relative paths. cron's PATH is short and your profile isn't sourced. Use absolute paths for the command and any files it touches, and set variables explicitly.
- Output (and errors) discarded. Without redirection or a working MAILTO, you never see why it failed. Redirect to a log to debug: `>> /var/log/job.log 2>&1`.
How to fix it
- Re-check the five schedule fields against the exact time you intend.
- Make sure the crontab ends with a newline.
- Use absolute paths for the command and its files; set PATH/vars at the top of the crontab if needed.
- Redirect output to a log (`>> /tmp/job.log 2>&1`) and read it after the next run.