01Run it
Straight from the command's own help.
p202 system cronp202 system cron --jsonp202 system cron --raw --json02What 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 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.
03Build your command
Pick values and the command line writes itself, quoted and ready to paste.
p202 system cronSet flags below; the command updates as you type.
04Flags
1 flag, plus the global flags every command takes.
| Flag | What it does |
|---|---|
| --rawbool | Print 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,CLAUDECODEor another agent variable set, output is compact JSON and errors arrive on stderr as a JSON envelope with ahint. - Exit codes: 0 ok, 1 bad input, 2 auth, 3 network, 4 server error, 5 partial failure.
{
"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
}
]
}