p202 system cron

Show whether cron is ticking: rows and last run per job type

All commands

01Run it

Straight from the command's own help.

p202 system cron
p202 system cron --json
p202 system cron --raw --json

02What you get

Captured from the real binary, run against a demo store with 30 days of traffic. Switch tabs to see the same run as JSON, the shape scripts and agents parse.

p202 system cron
$ p202 system cron
type                  rows  last_run                 age
--------------------  ----  -----------------------  --------
daily                 1     2026-10-09 12:00:00 UTC  in 1h56m
hour (hourly)         1     2026-10-09 10:00:00 UTC  3m12s
secon (every minute)  1     2026-10-09 10:03:01 UTC  11s
Last cron execution: 2026-10-09 10:03:09 UTC (3s ago); 3 row(s) in 202_cronjobs.
Real output · p202 1.9.77 · demo dataexit 0

03Build your command

Pick values and the command line writes itself, quoted and ready to paste.

p202 system cron

Set flags below; the command updates as you type.

04Flags

1 flag, plus the global flags every command takes.

FlagWhat it does
--rawboolPrint every 202_cronjobs row as the server returns it (with --json: add jobs and recent_logs to the summary)

05How it works

Summarizes 202_cronjobs: per cronjob_type, its row count and last run (time and age), then the last execution recorded in 202_cronjob_logs with its age. Rows record the slot a job ran for: the daily row is noon of its day (so before noon it reads as later today), the hourly row the start of its hour.

The column is char(5): hour is the hourly tier, secon the per-minute one (a row a minute, by design). hourl is 'hourly' cut short, as development builds between 1.9.55 and 1.9.76 wrote it: their check never matched, so that tier ran every minute; past 100 such rows a note says so.

Like p202 rotator check, it exits 5 (partial_failure) when the last execution is older than 5 minutes (stale) or none is recorded (never_ran), with the summary still printed on stdout.

--raw prints every row as the server returns it; under --json it adds the server's jobs and recent_logs arrays to the summary object.

06For agents

Running this from an agent

  • Read the same facts as JSON: p202 commands system cron --json.
  • With AI_AGENT, CLAUDECODE or another agent variable set, output is compact JSON and errors arrive on stderr as a JSON envelope with a hint.
  • Exit codes: 0 ok, 1 bad input, 2 auth, 3 network, 4 server error, 5 partial failure.
p202 commands system cron --json
{
  "path": "p202 system cron",
  "use": "cron",
  "short": "Show whether cron is ticking: rows and last run per job type",
  "long": "Summarizes 202_cronjobs: per cronjob_type, its row count and last run (time\nand age), then the last execution recorded in 202_cronjob_logs with its age.\nRows record the slot a job ran for: the daily row is noon of its day (so\nbefore noon it reads as later today), the hourly row the start of its hour.\n\nThe column is char(5): hour is the hourly tier, secon the per-minute one (a\nrow a minute, by design). hourl is 'hourly' cut short, as development builds\nbetween 1.9.55 and 1.9.76 wrote it: their check never matched, so that tier\nran every minute; past 100 such rows a note says so.\n\nLike `p202 rotator check`, it exits 5 (partial_failure) when the last\nexecution is older than 5 minutes (stale) or none is recorded (never_ran),\nwith the summary still printed on stdout.\n\n--raw prints every row as the server returns it; under --json it adds the\nserver's jobs and recent_logs arrays to the summary object.",
  "runnable": true,
  "example": "p202 system cron\n  p202 system cron --json\n  p202 system cron --raw --json",
  "flags": [
    {
      "name": "raw",
      "type": "bool",
      "default": "false",
      "usage": "Print every 202_cronjobs row as the server returns it (with --json: add jobs and recent_logs to the summary)",
      "required": false
    }
  ]
}