UptimeHunt Docs
Cron Job Monitoring

Import from Crontab

Paste an existing crontab into UptimeHunt to bulk-create cron monitors, then copy back the wrapped crontab lines that ping them.

Import from Crontab

If you already maintain a crontab with several scheduled jobs, Import from crontab turns it into cron monitors in one pass instead of creating them one at a time — and hands you back the same crontab with each line wrapped to ping its new monitor.

Start the import

  1. Go to Cron Jobs and click Import from crontab.
  2. Paste your crontab into the text box. Shell environment-variable assignments (MAILTO=…, PATH=…, SHELL=…) and commented-out jobs (#0 2 * * * …) are skipped automatically — only lines that look like an active schedule are treated as candidates.
  3. Click Next: preview.

Review the preview

Each recognized line becomes a row you can adjust before anything is created:

ColumnWhat it is
IncludeCheckbox — uncheck any row you don't want imported
NameEditable, pre-filled from your crontab's own labels (see below), falling back to the command (e.g. /usr/local/bin/backup.sh --full becomes backup.sh --full)
ScheduleThe schedule rendered human-readably, in the timezone you pick
CommandThe original crontab command, unchanged, shown for reference only

Names come from your comments

The importer reads the comment directly above each job as its name — a crontab like:

# Download a new cacert.pem version from curl.se
0 1 * * * cd /srv/certs && curl --remote-name https://curl.se/ca/cacert.pem

imports as a monitor named Download a new cacert.pem version from curl.se. Blank lines, environment lines and commented-out jobs break that association, so an unrelated file-header comment never becomes a job's name.

Jobs managed by configuration-management tools are recognized by the marker each tool writes, and named accordingly:

ToolMarker read
Ansible (ansible.builtin.cron)#Ansible: <name>
Puppet (cron resource)# Puppet Name: <name>
Chef (cron resource)# Chef Name: <name>
Salt (cron state)# … SALT_CRON_IDENTIFIER:<identifier> (a human comment on the same line wins over the identifier)

Every pre-filled name stays editable in the preview.

Pick the timezone your crontab actually runs in at the top of the preview — These jobs run in — before importing; it's applied to every monitor created in this batch (crontab itself has no per-line timezone, so this is the one place to set it).

A line the parser can't recognize isn't silently dropped

Lines that don't parse as a schedule (fewer than 5 fields, or an unrecognized @macro such as @reboot, which has no fixed time to monitor) are excluded from the preview table and counted in a "skipped" note above it — check that count against what you pasted if a job you expected doesn't show up.

Import

Click Import N monitors. Each checked row is created as a separate cron monitor, one request at a time (not in parallel) — every organization has a monitor quota, so importing sequentially means a batch that hits the limit partway through still keeps everything created before the limit was reached, and reports exactly which rows failed and why.

Copy the wrapped crontab back

The results screen shows how many monitors were created (and any failures, with the reason for each), then your whole crontab reproduced line for line — comments, environment lines, blank lines and skipped entries untouched — with each successfully-imported job line rewritten to ping its new monitor. It is safe to replace the entire original file with it:

0 4 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 5 -o /dev/null https://ping.uptimehunt.io/<ping_token_1>
@hourly /usr/bin/healthcheck.sh && curl -fsS -m 10 --retry 5 -o /dev/null https://ping.uptimehunt.io/<ping_token_2>

By default this is the success-only form (&&). Uncheck Success-only form on the results screen for the exit-code-trap alternative, which reports every run, not just successes:

0 4 * * * /usr/local/bin/backup.sh; curl -fsS -m 10 --retry 5 -o /dev/null https://ping.uptimehunt.io/<ping_token_1>/$?

Click Copy all, then replace the original lines in your crontab (crontab -e) with the copied output. See Cron Job Monitoring for the rest of the ping idioms — including the exit-code-trap variant that also attaches a log excerpt — if you want more than the two forms offered here.

On this page