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

TODO#

Memory pro User oder pro Service

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-4) was last changed on 04-Jan-2019 20:32 by Peter