systemd

Starten (eenmalig) en stoppen van een unitfile.

sudo systemctl start unitfile.service
sudo systemctl stop unitfile.service

Of sudo systemctl restart unitfile.service bij wijzigingen.

Enable en disable zorgen er voor dat de service bij het opstarten geactiveerd wordt (of gedeactiveerd).

sudo systemctl enable unitfile.service
sudo systemctl disable unitfile.service

De .service is optioneel, systemd snapt dat het om een service gaat…

Lijstjes

Bekijk alle enabled unit-files:

systemctl list-unit-files | grep enabled

Alle draaiende units:

systemctl | grep running

Debuggen

Met journalctl kan je systemd journal bekijken en query’en. Door de -f flag mee te geven blijf je de output volgen:

sudo journalctl -f -u <unit>

Zonder sudo kan ook zolang de user in groep systemd-journal zit.

sudo adduser <user> systemd-journal

Unitfiles

Voor eigen unitfiles is /etc/systemd/system vaak de directory om de file te plaatsen. Mocht je op zoek zijn naar de unitfile van een bepaalde service dan kun je die uit de status halen:

systemctl status <file>

Opbouw van de unitfile

# /etc/systemd/system/naam.service

[Unit]
Description=korte beschrijving
# After=Units die hier staan worden gestart voor deze unit start
# Requires=Units die hier staan zijn dependencies. Als ze niet op het systeem staan kan de unit niet opgestart worden.

[Service]
Restart=always
ExecStart=/path/to/executable -p=param

[Install]
WantedBy=multi-user.target # maakt een symlink in /etc/systemd/system/multi-user.target.wants als de unit enabled is

Als er wijzigingen aan systemd unitfiles gedaan worden moet systemd even op de hoogte gebracht worden:

sudo systemctl daemon-reload

Dit herstart niet de programma’s zelf, daarvoor gebruik je restart.

NB: /etc/systemd/system is ook de veilige plek om bestaande unitfiles aan te passen. Unitfiles in deze directory hebben voorrang op unitfiles andere directories op het bestandssysteem. Je kan hier dus een unitfile van een systeembestand aanpassen zonder het origineel te wijzigen.