Crontab Generator

Build robust cron schedules and jobs with locking, logging, alerts, and safety checks.

Absolute paths are recommended.

cron configuration

Installation Instructions

# Edit your personal crontab

crontab -e


# Paste the generated configuration and save.


# List current crontab to verify

crontab -l

Overview

Cron is the time-based job scheduler in Unix-like operating systems. It is essential for automating repetitive tasks like backups, log rotation, and health checks. This generator helps you create both user crontabs (editable via crontab -e) and system crontabs (/etc/cron.d).

Precise Scheduling

Supports standard 5-part cron syntax and special @ schedules like @reboot.

Concurrency Safety

Integrates wrappers like flock and timeout to prevent system lockups.

Best Practices for Production

  • Always redirect output: If you don't redirect stdout/stderr, cron will try to email the output via local mail, which often fills up disk space or fails silently.
  • Use timeouts: Network calls in cron jobs can hang forever. Wrap commands in `timeout` to ensure they eventually terminate.
  • Don't run as root: Only run jobs as root if they absolutely need to modify system files.

Troubleshooting

Job never runs: Check the cron daemon logs (`/var/log/cron` or `/var/log/syslog`). Ensure your crontab has an empty newline at the very end of the file.

Job runs but fails: This is almost always a PATH issue. Ensure you are using absolute paths to all binaries in your script.

Frequently Asked Questions

What is the difference between a user crontab and /etc/cron.d?
A user crontab is specific to an individual user and does not require a 'user' field in the expression. /etc/cron.d files are system-wide, drop-in configurations that explicitly require a username field before the command.
Why should I use flock?
flock prevents overlapping executions. If a cron job runs every 5 minutes but takes 10 minutes to complete, you will end up with multiple instances running simultaneously, which can crash your server. flock ensures only one instance runs at a time.
Why isn't my cron job finding my commands?
Cron executes with a highly restricted environment and minimal PATH (usually just /usr/bin:/bin). Always use absolute paths (e.g., /usr/local/bin/node instead of node) or explicitly set the PATH variable at the top of your crontab.