Esempi di ping per cron job con ogni scheduler

Aggiornato il Ottobre 18, 2026 4 min di lettura

Ogni monitor di cron job ha il proprio URL di ping, indicato nella sua pagina. Sostituisci https://app.uptimecheck.com/api/hb/your-token qui sotto con il tuo. Per creare il monitor, leggi come monitorare un cron job.

Gli URL

…/your-token: il job è stato eseguito e completato con successo.…/your-token/start: il job è partito. Vedi i tempi di esecuzione, e un’esecuzione che supera il Maximum run time genera un avviso.…/your-token/fail: il job non è riuscito. Ricevi subito un avviso invece che alla scadenza.…/your-token/0 fino a /255: il codice di uscita. 0 indica successo, qualsiasi altro valore un errore.

Funzionano GET, POST e HEAD, e la risposta è OK. Il body di una POST viene salvato come output del job e mostrato con gli errori e nell’avviso. Leggiamo fino a 64 kB e conserviamo la parte iniziale e quella finale, 10.000 caratteri in tutto. Un body più grande viene rifiutato e il ping va perso, quindi invia la parte finale del log, come qui sotto. Il token nell’URL è il segreto: tienilo fuori dai log pubblici.

Uno script wrapper per qualsiasi scheduler

Questo script esegue un comando, ne segnala l’avvio, il codice di uscita e gli ultimi 60 kB di output, e restituisce lo stesso codice di uscita. Salvalo come /usr/local/bin/with-ping ed esegui chmod +x sul file.

#!/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

Imposta sul monitor la stessa pianificazione e la Time zone in cui gira il crontab, spesso UTC.

Scheduler di Laravel

Laravel chiama gli URL da solo. In routes/console.php (Laravel 11 e successivi; nelle versioni precedenti, gli stessi metodi su $schedule in 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”);

Un errore è un comando che termina con un codice di uscita diverso da zero. La pianificazione segue il fuso orario dell’app, a meno che tu non aggiunga ->timezone(); imposta lo stesso sul monitor.

Kubernetes CronJob

Salva l’URL di ping come secret con kubectl create secret generic uptimecheck –from-literal=ping-url=https://app.uptimecheck.com/api/hb/your-token. L’immagine deve contenere 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

Se il pod non parte mai, ad esempio perché non è possibile scaricare l’immagine, non arriva alcun ping e il monitor invia un avviso alla scadenza. timeZone richiede Kubernetes 1.27 o successivo.

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”

Salva l’URL di ping come secret del repository UPTIMECHECK_PING_URL. Imposta sul monitor il fuso orario del workflow, UTC per impostazione predefinita. Quando è sotto carico, GitHub può avviare in ritardo le esecuzioni pianificate, quindi prevedi un Grace period generoso, ad esempio 30 minuti.

Timer systemd

# /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

Attivalo con sudo systemctl daemon-reload e sudo systemctl enable –now backup.timer. OnCalendar segue il fuso orario del server.

Utilità di pianificazione di 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

Registralo perché venga eseguito ogni notte alle 03:00, in PowerShell come amministratore:

$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 usa il fuso orario del computer; imposta lo stesso sul monitor. Scopri di più sulle espressioni cron e sul monitoraggio dei cron job.

Questo articolo ti è stato utile?

Provalo nel tuo workspace

Prova gratuita di 14 giorni · Poi gratis con 5 monitor · Nessuna carta di credito

Ancora bloccato?

Scrivi a support@uptimecheck.com e ti risponderemo entro 24 ore.

Vuoi automatizzare? La Riferimento API copre REST API, webhook, ping dei cron job e MCP.