The nightly backup, the morning report or the weekly cleanup depend on someone remembering to start them, and the day that person is out, they don't happen. This is the official page explaining how to schedule those jobs on a Linux server: at a calendar time, a few minutes after the machine boots, or at a fixed interval.
Who this is NOT for
If you don't have your own Linux server, or you have one but nobody on your team works with config files and the terminal, don't start here. It's a technical manual with no screens, beginner examples or buttons. If what you want is for things to happen automatically between your apps (email, spreadsheets, CRM), look at n8n or Activepieces. If someone runs your server for you, pass this card to them instead of reading it yourself.
The real value of this page is the warnings almost nobody reads. If the previous run is still going when the next one is due, systemd does not start another copy: it leaves the running one alone. A service with RemainAfterExit=yes runs once and never repeats. An interval timer pauses while the machine is suspended. And none of them fire to the exact second, because of AccuracySec. The classic mistake is writing the .timer and forgetting it needs a .service with the same name, or assuming it ran because it was "scheduled". It also has no published license or star count, because it's official documentation rather than a repo. The page says it covers systemd 262.
Your first step
Next to a service you already have (say backup.service), create backup.timer. In its [Timer] section, set OnBootSec=5min and OnUnitActiveSec=1h. According to the page, that combination runs it 5 minutes after the machine boots and then every hour.
The systemd.timer implementation guide
The project belongs to www.freedesktop.org and it is free: the link beside asks for nothing. The guide to set it up without getting lost is ours: step by step, common mistakes and a checklist. Leave your email and we will send it.
No spam. Unsubscribe anytime.