Cron Jobs
Install scheduled jobs as systemd timers on the catch host.
Cron payloads install a script or binary as a scheduled job. Catch implements them as systemd timer units, while yeet accepts a five-field cron expression.
yeet cron <svc> ./job.sh "0 9 * * *"
yeet cron <svc> ./job.sh "0 9 * * *" -- --job-arg foo
Arguments after -- are saved as payload args and replayed on future runs.
Binary payloads uploaded by cron are zstd-compressed; catch auto-decompresses
them on receipt.
Re-run yeet cron with the new payload or schedule.
yeet cron <svc> ./job.sh "30 2 * * *"
If a yeet.toml exists, or after the first successful cron install, you can
omit the payload and expression to replay the saved job:
yeet cron <svc>
yeet env copy <svc> ./job.env
yeet env set <svc> LOG_LEVEL=debug
yeet copy ./config.yml <svc>:config/config.yml
Use Binaries & Scripts for payload preparation details.
Cron jobs can use ZFS-backed service roots too, which is useful for jobs that write persistent state or process files under their managed data directory.
yeet cron <svc> ./job.sh "0 9 * * *"
yeet stop <svc>
yeet service set <svc> --service-root=tank/jobs/<svc> --zfs --copy
Cron installs use yeet cron; service-root moves happen afterward through
yeet service set. Stop the job before moving its root. See
ZFS for service-root and snapshot behavior.
yeet status <svc>
yeet logs -f <svc>
yeet rm <svc>
yeet rm --clean-data <svc>
--clean-data removes the managed service data root in addition to uninstalling
the timer and service units.