Cron Manager
Vinza Store Cron Manager
Cron Manager
Free Tools
croncrontabschedulerjobtaskautomation
Get this app
Free
Available to all users. No license needed.

Cron Manager edits crontabs from the panel instead of over SSH, in two scopes that share one code path: an administrator works on the panel's own crontab, while a non-admin tenant works only on their own system user's crontab, with the owner injected server-side from the request user so the scope cannot be spoofed. The page is tabbed — Jobs, Environment, Advanced, and a read-only System crontab view for admins — and adding or editing a job happens in a modal that lets you express the schedule as a preset, a five-field builder, or a raw expression, all kept in sync and backed by a preview that names the schedule in plain English and lists its next five firing times.

Jobs can be added, edited, duplicated, enabled or disabled, deleted, and run on demand; each job is anchored to its physical crontab line so two textually identical jobs stay distinguishable, and its trailing comment is edited and removed together with it. Because cron itself records nothing about its own runs, the only history shown is of the runs the panel triggered — exit code and captured output, kept per crontab owner in PluginData and capped at a small number of entries. The Environment tab edits the MAILTO, PATH, SHELL and CRON_TZ assignments while leaving any other variable in place, and the Advanced tab exposes the raw crontab with per-line validation that names the offending line before anything is written, plus a download.

Anything needing privilege goes through the root system agent rather than sudo, which the panel user is not expected to hold: another user's crontab is read and written via the agent, and Run now drops privilege with runuser instead of escalating. Command text containing a percent sign is escaped as crontab(5) requires, and schedule validation enforces per-field ranges while accepting day and month names. If the agent is unreachable the cron service state is reported as unknown rather than as stopped, and the hosting-plan cron-job cap is checked on every path that can grow the job count, including duplication and pasting a table into the raw editor.

Availability: Free on every plan, including the Free plan.

Min Panel Version
1.0.0
Platform
Ubuntu 20.04+ / 22.04+ / 24.04+
License
Free — no key needed
VinzaPanel handles installation automatically via the Vinza Store. Make sure the panel agent has internet access to download dependencies.
1.0.6 — Per-job run options (sliders button): log every scheduled run — exit code, duration and the output tail of the last 20 runs, shown in a Run history view — now independent of failure notification; overlap protection (a run is skipped while the previous one still holds the job's flock lock) and a per-job timeout. All go through the same wrapper; a job with every option off keeps its crontab line exactly as written, and 1.0.5 notify lines are left untouched. 1.0.5 — Notify on failure, opt-in per job (bell button): the job is wrapped by a small runner that records each run (time, duration, exit code) and drops failures into a spool the panel turns into notifications — the tenant's own bell for a tenant crontab, the admin's alerts for the panel crontab (one per job per 30 min). The last runs show in the Last run column. Switching it off restores the original crontab line exactly; jobs that use cron's unescaped-% stdin input cannot be wrapped and are refused. 1.0.4 — The Scheduler's jobs (Management › Scheduler share the panel crontab) no longer show up as editable jobs in the admin view; deleting one there also removed the Scheduler's marker, after which every Scheduler change added a duplicate block. Saving here now keeps that block intact. Duplicating a paused job gives a paused copy instead of one that starts running at once. 1.3.0 — Professional pass. The page is now tabbed (Jobs · Environment · Advanced · System crontab) instead of one long scroll. Adding or editing a job happens in a modal with three ways to express a schedule — Preset, a five-field Builder, or a raw Expression — kept in sync and backed by a live preview that names the schedule in plain English and lists its next five firing times, so you see what an expression means before you save it. Jobs gained duplicate, copy-to-clipboard, search and status filtering, and a Last-run column showing the exit code of runs the panel triggered (cron itself records nothing; history is kept per crontab owner in PluginData). New Environment tab edits MAILTO / PATH / SHELL / CRON_TZ — the assignments that decide where output is mailed and whether a command is even found — while preserving any other variable already set. New Advanced tab edits the raw crontab with per-line validation that names the offending line before anything is written, plus download. The hosting-plan cron-job cap is now enforced on every path that can grow the count (add, duplicate, and pasting a table into the raw editor), closing a bypass. Cron service state is read through the agent and is now tri-state: an unreachable agent reports 'unknown' rather than falsely claiming cron is stopped. The dashboard widget is no longer shown to tenants — it counted the panel's crontab, not theirs. 1.2.0 — Correctness pass plus a real tenant UI. Commands containing '%' (e.g. `date +%Y`) are now escaped as crontab(5) requires; previously cron silently truncated the command at the first '%' and fed the rest to it on stdin. Schedule validation now enforces per-field ranges and accepts day/month names (`0 0 * * MON`, `0 0 1 JAN *`), while rejecting out-of-range values and `*/0`; an already-broken line stays visible and is flagged instead of vanishing from the list. Jobs are anchored to their physical crontab line, so deleting or toggling one of two textually identical jobs no longer hits the wrong one, and a job's '# comment' is now shown, editable, and removed together with its job instead of accumulating as orphans. New: edit a job in place, run one on demand and see its exit code/output, a schedule preset picker with a live plain-English preview, and a next-run column. Non-admin tenants finally get their own page (the my_* actions previously had no template and fell through to the plugin store page). Privileged work now goes through the system agent instead of `sudo -n`, which the panel user is not guaranteed to hold: another user's crontab is read/written via the agent, and 'Run now' drops privilege with `runuser` rather than escalating. Agent outages surface as a clear error instead of an empty job list. Dashboard widget no longer forks `systemctl`+`crontab` on every render. 1.1.5 — Initial release: per-user crontab, enable/disable, system crontab viewer.

Use VinzaPanel's REST API to download and install this app programmatically.

Download app files
HTTP
POST /plugins/api/download/cron-manager/
Content-Type: application/json

{
  "panel_version": "1.0.0"
}
Example response
JSON
{
  "success": true,
  "plugin_id": "cron-manager",
  "version": "1.0.6",
  "download_url": "..."
}