Ejemplos de ping de cron jobs para cualquier programador

Actualizado el octubre 18, 2026 4 min de lectura

Cada monitor de cron job tiene su propia URL de ping, que aparece en su página. Sustituye https://app.uptimecheck.com/api/hb/your-token en los ejemplos por la tuya. Para crear el monitor, consulta cómo monitorizar un cron job.

Las URL

…/your-token: el job se ejecutó y terminó bien.…/your-token/start: el job ha empezado. Verás los tiempos de ejecución, y una ejecución que supere el Maximum run time genera una alerta.…/your-token/fail: el job ha fallado. Recibes la alerta al momento en lugar de al llegar el plazo.…/your-token/0 a /255: el código de salida. 0 es éxito; cualquier otro, un fallo.

Funcionan GET, POST y HEAD, y la respuesta es OK. El cuerpo de un POST se guarda como la salida del job y se muestra con los fallos y en la alerta. Leemos hasta 64 kB y guardamos el principio y el final, 10.000 caracteres en total. Un cuerpo más grande se rechaza y el ping se pierde, así que envía el final del log, como en los ejemplos. El token de la URL es el secreto, así que no lo dejes en logs públicos.

Un wrapper para cualquier programador de tareas

Este script ejecuta un comando, informa de su inicio, su código de salida y los últimos 60 kB de salida, y devuelve el mismo código de salida. Guárdalo como /usr/local/bin/with-ping y ejecuta chmod +x sobre él.

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

Configura el monitor con la misma programación y la Time zone en la que se ejecuta el crontab, a menudo UTC.

Programador de tareas de Laravel

Laravel hace los pings a las URL por sí mismo. En routes/console.php (Laravel 11 y posteriores; en versiones anteriores, los mismos métodos sobre $schedule en 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 fallo es un comando que termina con un código de salida distinto de cero. La programación sigue la zona horaria de la aplicación salvo que añadas ->timezone(); configura la misma en el monitor.

Kubernetes CronJob

Guarda la URL de ping como secret con kubectl create secret generic uptimecheck –from-literal=ping-url=https://app.uptimecheck.com/api/hb/your-token. La imagen necesita 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

Si el pod no llega a arrancar, por ejemplo porque no se puede descargar la imagen, no llega ningún ping y el monitor alerta al cumplirse el plazo. timeZone requiere Kubernetes 1.27 o posterior.

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»

Guarda la URL de ping como el secret del repositorio UPTIMECHECK_PING_URL. Configura el monitor con la zona horaria del workflow, UTC por defecto. GitHub puede iniciar con retraso las ejecuciones programadas cuando está saturado, así que deja un Grace period generoso, por ejemplo de 30 minutos.

Timer de 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

Actívalo con sudo systemctl daemon-reload y sudo systemctl enable –now backup.timer. OnCalendar sigue la zona horaria del servidor.

Programador de tareas de Windows

# 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

Regístralo para que se ejecute cada noche a las 03:00, en PowerShell como administrador:

$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

El Programador de tareas usa la zona horaria del equipo; configura la misma en el monitor. Lee más sobre expresiones cron y la monitorización de cron jobs.

¿Te ha resultado útil este artículo?

Pruébalo en tu propio espacio de trabajo

14 días de prueba gratis · Después, gratis con 5 monitores · Sin tarjeta de crédito

¿Sigues atascado?

Escribe a support@uptimecheck.com y te responderemos en 24 horas.

¿Quieres automatizarlo? La Referencia de la API cubre la API REST, los webhooks, los pings de cron jobs y MCP.