MB Networks
CFG-03 · Scheduling
Describe a command and a schedule, get a working .service + .timer pair and the commands to enable it — the modern, loggable replacement for a crontab entry.
Becomes name.service / name.timer.
backup.service
backup.timer
Install both files to /etc/systemd/system/, then run systemctl daemon-reload && systemctl enable --now NAME.timer.
A systemd timer gets everything a crontab entry doesn't for free: run history and exit status via systemctl status and journalctl -u name.service, automatic dependency ordering (wait for the network, a mount, another service), and Persistent=true catch-up if the machine was off at the scheduled time — a plain cron job that gets skipped during downtime just silently never runs.
The .timer unit only defines when; it points at a same-named .service unit that defines what runs. Forgetting to enable the timer (and enabling the service instead) is the most common mistake — systemctl enable --now name.timer, not name.service, is what actually schedules it.
The .timer unit — systemctl enable --now name.timer. Enabling the .service instead runs it once immediately and doesn't schedule anything; the timer is what triggers the service repeatedly.
It records the last trigger time and, if the machine was off or asleep when the timer should have fired, runs the job once as soon as the system is back up. Without it, a missed scheduled run (e.g. a laptop that was shut down overnight) is simply skipped until the next scheduled time.
Run systemd-analyze calendar "your expression" — it prints the next several times the expression would fire, or an error if the syntax is invalid, without needing to install the timer first.
Related tools
DevOps
Crontab to systemd Timer Converter
Convert a crontab line into a systemd .service + .timer pair, including the two-OnCalendar-line trick for cron's day-of-month/day-of-week OR behavior. No account, nothing leaves your browser.
Open →DevOps
Cron Expression Builder
Build or decode cron expressions. Enter a cron schedule and get a plain-English description plus the next 10 run times.
Open →DevOps
SSH Config Builder
Build an SSH config file from a form — host aliases, ports, identity files, ProxyJump, and keepalives. No account, nothing leaves your browser.
Open →DevOps
rsync Command Builder
Build an rsync command from checkboxes with plain-English explanations of every flag — archive mode, deletes, excludes, dry-run, and SSH transport. No account, nothing leaves your browser.
Open →DevOps
chmod & umask Calculator
Convert Linux/Unix file permissions between checkboxes, symbolic notation, and octal — plus a umask calculator showing the resulting default file and directory permissions.
Open →DevOps
Docker Compose Generator
Build a valid Docker Compose file from a form — services, images, ports, volumes, environment variables, and restart policy. No account, nothing leaves your browser.
Open →