Eksempler på cron-job-pings til alle schedulere

Opdateret oktober 18, 2026 4 min. læsning

Hver monitor for cron-jobs har sin egen ping-URL, som vises på dens side. Erstat https://app.uptimecheck.com/api/hb/your-token nedenfor med din egen. Sådan opretter du monitoren: se sådan overvåger du et cron-job.

URL’erne

…/your-token: jobbet kørte og lykkedes.…/your-token/start: jobbet startede. Du ser køretider, og en kørsel, der overskrider Maximum run time, udløser en alarm.…/your-token/fail: jobbet fejlede. Du får en alarm med det samme i stedet for ved deadline.…/your-token/0 til /255: exitkoden. 0 betyder succes, alt andet en fejl.

GET, POST og HEAD virker alle, og svaret er OK. En POST-body gemmes som jobbets output og vises ved fejl og i alarmen. Vi læser op til 64 kB og gemmer den første og den sidste del, i alt 10.000 tegn. En større body afvises, og pinget går tabt, så send slutningen af loggen som vist nedenfor. Tokenet i URL’en er hemmeligheden, så hold det ude af offentlige logs.

Et wrapper-script til enhver scheduler

Dette script kører en kommando, rapporterer starten, exitkoden og de sidste 60 kB output og sender exitkoden videre. Gem det som /usr/local/bin/with-ping, og kør chmod +x på det.

#!/bin/sh
# with-ping URL COMMAND…: runs COMMAND and reports it to Uptimecheck
url=”$1″; shift
curl -fsS -m 10 –retry 3 -o /dev/null “$url/start”
log=$(mktemp)
“$@” > “$log” 2>&1
code=$?
tail -c 60000 “$log” | curl -fsS -m 10 –retry 3 –data-binary @- -o /dev/null “$url/$code”
rm -f “$log”
exit $code

crontab

# Ping when the job succeeds
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 –retry 3 -o /dev/null https://app.uptimecheck.com/api/hb/your-token

# Or report start, exit code and output with the script above
0 3 * * * /usr/local/bin/with-ping https://app.uptimecheck.com/api/hb/your-token /usr/local/bin/backup.sh

Giv monitoren samme tidsplan og den Time zone, som crontab kører i, ofte UTC.

Laravel scheduler

Laravel pinger selv URL’er. I routes/console.php (Laravel 11 og nyere; før det de samme metoder på $schedule i app/Console/Kernel.php):

use Illuminate\Support\Facades\Schedule;

Schedule::command(“backup:run”)
->dailyAt(“03:00”)
->pingBefore(“https://app.uptimecheck.com/api/hb/your-token/start”)
->pingOnSuccess(“https://app.uptimecheck.com/api/hb/your-token”)
->pingOnFailure(“https://app.uptimecheck.com/api/hb/your-token/fail”);

En fejl er en kommando, der slutter med en exitkode forskellig fra 0. Tidsplanen følger appens tidszone, medmindre du tilføjer ->timezone(); indstil den samme på monitoren.

Kubernetes CronJob

Gem ping-URL’en som en secret med kubectl create secret generic uptimecheck –from-literal=ping-url=https://app.uptimecheck.com/api/hb/your-token. Imaget skal indeholde curl.

apiVersion: batch/v1
kind: CronJob
metadata:
name: nightly-backup
spec:
schedule: “0 3 * * *”
timeZone: “Europe/Stockholm”
concurrencyPolicy: Forbid
jobTemplate:
spec:
backoffLimit: 0
template:
spec:
restartPolicy: Never
containers:
– name: backup
image: registry.example.com/backup:1.4
env:
– name: PING_URL
valueFrom:
secretKeyRef:
name: uptimecheck
key: ping-url
command: [“/bin/sh”, “-c”]
args:
– |
curl -fsS -m 10 –retry 3 -o /dev/null “$PING_URL/start”
/app/backup.sh > /tmp/out.log 2>&1
code=$?
tail -c 60000 /tmp/out.log | curl -fsS -m 10 –retry 3 –data-binary @- -o /dev/null “$PING_URL/$code”
exit $code

Hvis podden aldrig starter, for eksempel fordi imaget ikke kan hentes, kommer der intet ping, og monitoren sender en alarm ved deadline. timeZone kræver Kubernetes 1.27 eller nyere.

GitHub Actions

on:
schedule:
– cron: “0 3 * * *”

jobs:
nightly:
runs-on: ubuntu-latest
env:
PING_URL: ${{ secrets.UPTIMECHECK_PING_URL }}
steps:
– uses: actions/checkout@v4
– run: curl -fsS -m 10 –retry 3 -o /dev/null “$PING_URL/start” || true
– run: ./scripts/nightly.sh
– if: success()
run: curl -fsS -m 10 –retry 3 -o /dev/null “$PING_URL”
– if: failure()
run: curl -fsS -m 10 –retry 3 -o /dev/null “$PING_URL/fail”

Gem ping-URL’en som repository-secret UPTIMECHECK_PING_URL. Giv monitoren workflowets tidszone, som er UTC som standard. GitHub kan starte planlagte kørsler for sent, når der er travlt, så giv en rummelig Grace period, for eksempel 30 minutter.

systemd timer

# /etc/systemd/system/backup.service
[Unit]
Description=Nightly backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/with-ping https://app.uptimecheck.com/api/hb/your-token /usr/local/bin/backup.sh

# /etc/systemd/system/backup.timer
[Unit]
Description=Run the nightly backup

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

Slå den til med sudo systemctl daemon-reload og sudo systemctl enable –now backup.timer. OnCalendar følger serverens tidszone.

Windows Task Scheduler

# C:\Scripts\backup-with-ping.ps1
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ping = “https://app.uptimecheck.com/api/hb/your-token”
try { Invoke-RestMethod -Uri “$ping/start” -TimeoutSec 10 | Out-Null } catch {}
$output = & “C:\Scripts\backup.cmd” 2>&1 | Out-String
$code = $LASTEXITCODE
if ($output.Length -gt 30000) { $output = $output.Substring($output.Length – 30000) }
Invoke-RestMethod -Uri “$ping/$code” -Method Post -Body $output -TimeoutSec 10 | Out-Null
exit $code

Registrér scriptet, så det kører hver nat kl. 03:00, i PowerShell som administrator:

$action = New-ScheduledTaskAction -Execute “powershell.exe” -Argument “-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\backup-with-ping.ps1”
$trigger = New-ScheduledTaskTrigger -Daily -At 3am
Register-ScheduledTask -TaskName “Nightly backup” -Action $action -Trigger $trigger -User “SYSTEM” -RunLevel Highest

Task Scheduler bruger computerens tidszone; indstil den samme på monitoren. Læs mere om cron-udtryk og overvågning af cron-jobs.

Var denne artikel nyttig?

Prøv det i dit eget workspace

14 dages gratis prøveperiode · Derefter gratis med 5 monitorer · Intet betalingskort

Sidder du stadig fast?

Skriv til support@uptimecheck.com, så svarer vi inden for 24 timer.

Vil du automatisere? API-reference dækker REST API'et, webhooks, cron-job-pings og MCP.