Betrieb als Dienst

Die QuickHMI Runtime läuft unter Linux als Systemdienst und startet mit dem Betriebssystem. Wie der Dienst gesteuert wird, hängt von der Version ab.

Bis Version 14 wird der Dienst über qhmiRM gesteuert:

BefehlWirkung
sudo qhmiRM -rdStartet den QuickHMI Server.
sudo qhmiRM -sdStoppt den QuickHMI Server.
sudo qhmiRM -start -instance=<ID>Startet eine einzelne Instanz.
sudo qhmiRM -stop -instance=<ID>Stoppt eine einzelne Instanz.

Dahinter steht ein Init-Skript unter /etc/init.d/qhmiserver_lynx. Ob eine Instanz beim Systemstart mitläuft, legen Sie im Runtime Manager fest.

ℹ️ Hinweis: Version 15 ist noch nicht veröffentlicht. Diese Anleitung gilt erst mit deren Erscheinen.

Ab Version 15 übernimmt systemd den Betrieb. Es gibt zwei Arten von Diensten: einen Sammeldienst quickhmi-Version_M für die gesamte Installation und je Instanz einen eigenen Dienst quickhmi-Version_M@<ID>, wobei <ID> die Nummer der Instanz ist.

Starten und stoppen

Die Befehle des Runtime Managers gibt es weiterhin, sie wirken jetzt über systemd. Beide Spalten sind gleichwertig:

AufgabeMit qhmiRMMit systemctl
Alle Instanzen startensudo qhmiRM -rdsudo systemctl start quickhmi-Version_M
Alle Instanzen stoppensudo qhmiRM -sdsudo systemctl stop quickhmi-Version_M
Eine Instanz startensudo qhmiRM -start -instance=1sudo systemctl start quickhmi-Version_M@1
Eine Instanz stoppensudo qhmiRM -stop -instance=1sudo systemctl stop quickhmi-Version_M@1
Zustand anzeigen–systemctl status quickhmi-Version_M@1

Eine Übersicht aller laufenden Instanzen:

systemctl list-units "quickhmi-Version_M@*"

Autostart beim Hochfahren

Ob eine Instanz beim Systemstart mitläuft, entscheiden Sie im Runtime Manager über die Einstellung „Autostart“ der jeweiligen Instanz, genau wie unter Windows. Beim Hochfahren geht der Sammeldienst alle Instanzen durch und startet die, bei denen der Autostart eingeschaltet ist.

Beachten Sie dabei eine Besonderheit: Die Instanzdienste werden absichtlich nicht mit systemctl enable aktiviert. Der Befehl systemctl is-enabled quickhmi-Version_M@1 meldet deshalb immer disabled, auch wenn die Instanz beim Hochfahren startet. Maßgeblich ist die Einstellung im Runtime Manager. Aktiviert ist allein der Sammeldienst:

systemctl is-enabled quickhmi-Version_M

Wird eine Instanz mit qhmiRM -stop angehalten, schaltet das zugleich ihren Autostart aus. Sie läuft nach einem Neustart des Systems also nicht wieder an, bis sie erneut gestartet wird.

Protokolle ansehen

Die Ausgabe jeder Instanz landet im Journal des Systems. Laufend mitlesen:

journalctl -u quickhmi-Version_M@1 -f

Nur die Meldungen seit dem letzten Systemstart, oder die der letzten Stunde:

journalctl -u quickhmi-Version_M@1 -b
journalctl -u quickhmi-Version_M@1 --since "1 hour ago"

Zusätzlich schreibt der Server seine eigenen Logdateien nach /var/log/quickhmi/Version_M.

Arbeitsspeicher einer Instanz

Die maximale Speichergröße stellen Sie im Runtime Manager je Instanz ein. Der Dienst übernimmt den Wert beim nächsten Start aus der Datei java.env im Verzeichnis der Instanz. Tragen Sie den Wert nicht von Hand in die Dienstdatei ein, er würde beim nächsten Update überschrieben.

Dienstkonto und Zugriffsrechte

Die Instanzen laufen unter dem Systemkonto quickhmi, nicht als root. Das Konto hat kein Passwort und keine Anmeldeshell. Daraus ergeben sich zwei Punkte für den Betrieb:

  • Der Server darf nur unterhalb von /var/lib/quickhmi/Version_M und /var/log/quickhmi/Version_M schreiben. Dateien, die ein Projekt zur Laufzeit beschreibt, etwa Berichte oder Exporte, müssen dort liegen.
  • Für serielle Schnittstellen ist das Konto Mitglied der Gruppe dialout. Nutzt Ihre Anlage andere Geräte, muss das Konto in der jeweils zuständigen Gruppe sein.

Mehrere Instanzen

Jede Instanz hat ihren eigenen Dienst und ist unabhängig von den anderen: Sie können eine Instanz neu starten, ohne die übrigen zu unterbrechen. Wo die Dateien der Instanzen liegen, steht unter Installation.