Zo gebruik je het
- Voer de servicenaam, het commando met het volledige pad en de werkmap in.
- Stel de gebruiker, het herstartbeleid en eventuele omgevingsvariabelen in.
- Voeg eventueel basisbeveiliging of een schema (OnCalendar) toe om een timer te maken.
- Kopieer de gegenereerde bestanden, of plak de installatiecommando’s in een root-shell op de server.
Opties uitgelegd
- Type
- simple past bij programma’s die op de voorgrond blijven; oneshot past bij scripts die één keer draaien, zoals geplande taken.
- Restart
- Bij fout herstart de service wanneer die met een fout stopt of crasht; Altijd herstart hem ook na een normaal einde.
- OnCalendar
- Wanneer de timer afgaat, bijv. daily of *-*-* 03:00:00 voor elke dag 3 uur 's nachts. Test uitdrukkingen met systemd-analyze calendar.
Voorbeeld: een nachtelijke taak als timer
Om elke nacht om 3 uur een script uit te voeren, stel je het Commando (ExecStart) in op /usr/local/bin/backup.sh, de servicenaam op backup, Type op oneshot en Restart op Nooit, en vink je daarna “Volgens schema uitvoeren (een .timer maken)” en “Basisbeveiliging” aan. Met de standaardgebruiker en werkmap maakt de generator twee bestanden. backup.service:
[Unit]
Description=Nightly backup
[Service]
Type=oneshot
User=www-data
WorkingDirectory=/srv/myapp
ExecStart=/usr/local/bin/backup.sh
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=read-only
en backup.timer:
[Unit]
Description=Run backup on a schedule
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
Unit=backup.service
[Install]
WantedBy=timers.target
Er veranderen twee dingen wanneer een timer aan staat. Het servicebestand verliest zijn sectie [Install], omdat de timer het start, en de installatiecommando’s schakelen de timer in in plaats van de service:
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers backup.timer
journalctl -u backup.service -f
Het Type wordt niet voor je gewijzigd wanneer je de timeroptie aanvinkt, dus kies zelf oneshot voor taken die eindigen. Een oneshot-service in combinatie met Restart Altijd is niet geldig, dus de generator laat Restart weg en toont een waarschuwing.
Veelgestelde vragen
Waar zet ik het bestand neer?
In /etc/systemd/system/. Voer daarna systemctl daemon-reload en systemctl enable --now <name>.service uit — de gegenereerde commando’s doen dit allemaal.
Waarom mislukt mijn service met “Executable path is not absolute”?
Oudere systemd-versies hebben het volledige pad naar het programma nodig in ExecStart. Zoek het op met which, bijv. which node.
Timer of cron?
Timers loggen in het journal, kunnen gemiste runs inhalen terwijl de server uit stond en draaien nooit twee keer tegelijk. cron is eenvoudiger voor oneliners en werkt nog prima.
Privacy
Deze tool draait volledig in je browser. Je bestanden en tekst worden op je eigen apparaat verwerkt en nooit naar onze servers geüpload.