Nutzerprozesse mit Systemd#

Systemd kann nützlich sein, um auf einem Serversystem als "normaler" User Prozesse ("Daemons") nach dem Booten des Servers zu starten und um diese Prozesse in eine eigene Resourcen-Gruppe zu verschieben.

Voraussetzung ist die Installation den Pakets libpam-systemd

  apt-get install libpam-systemd

Zunächst muss das Feature für den User aktiviert werden

  loginctl enable-linger <someuser>

Danach sollte unter der Kennung des Users someuser eine Instanz des Prozesses "/lib/systemd/systemd --user" laufen.

Ins Environment des Users muss die Umgebungsvariable

  export XDG_RUNTIME_DIR="/run/user/$UID"

Eine Unit für den User kann in $HOME/.config/systemd/user/example.service angelegt werden. Dabei "example" durch den Namen des Service ersetzen. Im Folgenden nutze ich "tomcat".

Das Unit-File tomcat.service:

[Unit]
Description=Tomcat User Service

[Service]
WorkingDirectory=%h/tomcat
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
Environment="JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64"
ExecStart=%h/tomcat/bin/catalina.sh run
Restart=always
PrivateTmp=true
NoNewPrivileges=true

[Install]
WantedBy=default.target

Der Service wird aktiviert und gestartet mit:

  systemctl --user enable tomcat.service
  systemctl --user start tomcat.service
  systemctl --user status tomcat.service
  systemctl --user stop tomcat.service

Nach Änderungen des Unit-File:

  systemctl --user daemon-reload

Ressourcen limitieren#

Die Ressourcen können für jeden User einzeln begrenzt werden:

  systemctl set-property user-1000.slice MemoryHigh=128M
  systemctl set-property user-1000.slice TasksMax=12
  systemctl set-property user-1000.slice CPUQuota=33%
  systemctl cat user-1000.slice
  systemctl status user-1000.slice

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-5) was last changed on 08-Dec-2020 20:42 by Peter Hormanns