---
title: Dateien und Dienste
url: https://doc2.pstreamer.tv/de/manual/install/files.html
lang: de
product: Perfect Streamer
version: 2.0.2.362
---

# Dateien und Dienste

****/usr/local/bin/pss****
  Ausführbare Datei.
****/opt/pss/config/pss.properties****
  Globale Einstellungen, Protokolle, Ordnerpfade usw. Nach Änderungen den Dienst neu starten.
****/opt/pss/config/pss.json****
  Haupt-Einstellungsdatei. Wird automatisch erstellt und aktualisiert. Beim Start versucht der Dienst, genau diese Datei zu laden. Aufbau der Datei — siehe [Die Einstellungsdatei pss.json](../extras/config_file.md#extras-config-file).
****/opt/pss/config/pss_last.json****
  Eine Kopie der letzten *pss.json*, die sauber geladen wurde. Sie wird bei jedem Start neu geschrieben, bei dem tatsächlich *pss.json* geladen wurde; ein Start auf einer Ausweichdatei aktualisiert sie nicht — sonst wäre sie nicht mehr die letzte funktionierende. Sie dient als erste Rückfallebene, wenn die Hauptdatei nicht ausgewertet werden konnte. Auf einem Knoten, der seit der Installation nie neu gestartet wurde, und dort, wo das Einstellungsverzeichnis schreibgeschützt ist, gibt es diese Datei nicht.
****/opt/pss/config/pss_back.json****
  Sicherungskopie der vorherigen funktionierenden Konfiguration. Sie entsteht nur beim Wiederherstellen der Einstellungen aus einer zuvor gespeicherten Kopie in der Weboberfläche ([Wartung](../webui/administration.md#webui-maintenance)) und dient als Rückfallebene nach *pss_last.json*. Eine regelmäßige Sicherung führt der Dienst nicht, auf einem Knoten, auf dem die Einstellungen nie wiederhergestellt wurden, gibt es diese Datei daher nicht.
****/opt/pss/config/pss_default.json****
  Standard-Einstellungsdatei. Wird mit dem Paket ausgeliefert und als letzte Ausweichoption verwendet, wenn weder *pss.json* noch *pss_last.json* noch *pss_back.json* geladen werden können. Aus ihr wird auch beim allerersten Start die betriebsbereite *pss.json* erzeugt: Die Datei legt den Port der Weboberfläche `8808` sowie das Konto *admin* / *admin* fest.
****/opt/pss/config/bad/****
  Archiv beschädigter *pss.json*-Dateien. Wenn die Haupt-Einstellungsdatei beim Start nicht ausgewertet werden kann, wird sie mit einem Namen der Form *pss_YYYYMMDD_HHMMSS.json* hierher verschoben. Das Verzeichnis wird automatisch erstellt und wächst nicht unbegrenzt: es bleiben die zwanzig Dateien mit den höchsten Namen. Näheres siehe Abschnitt Verhalten beim Start und bei Konfigurationsfehlern.
****/opt/pss/data****
  Ordner zur Datenablage. Wird automatisch erstellt und aktualisiert. Kann in der Datei mit den globalen Einstellungen geändert werden.
****/usr/lib/systemd/system/pss.service****
  systemd-Unit-Datei des Dienstes.
****/var/log/pss****
  Ordner für die Protokollausgabe. Kann in der Datei mit den globalen Einstellungen geändert werden.

Der Dienstname lautet **pss**. Wird unter dem Benutzer **pss** ausgeführt.

Die Arbeit mit dem Schlüssel übernimmt das Paket des Schutzsystems **aksusbd** — es umfasst die Dienste **hasplmd** und **aksusbd**. Das Paket **pstreamer** deklariert eine Abhängigkeit davon, Version 10.33 oder neuer: es enthält den Schutzdienst selbst nicht, liegt aber mit ihm im selben Repository, sodass der Paketmanager ihn zusammen mit ihm installiert. Ein älterer Schutzdienst kann die Bibliotheken des Herstellers, die **pstreamer** in */var/hasplm* ablegt, nicht laden.

## Verhalten beim Start und bei Konfigurationsfehlern

Beim Start versucht der Dienst nacheinander, die Einstellungsdateien aus dem Ordner */opt/pss/config* zu laden:

1. *pss.json* — Haupt-Einstellungsdatei.
2. *pss_last.json* — eine Kopie der letzten Konfiguration, die sauber geladen wurde.
3. *pss_back.json* — Sicherungskopie der vorherigen funktionierenden Konfiguration.
4. *pss_default.json* — mit dem Paket ausgelieferte Standardeinstellungen.

Verwendet wird die erste erfolgreich geladene Datei. Fehlen alle vier Dateien oder sind sie beschädigt, startet der Dienst mit leeren Einstellungen — in ihnen gibt es kein einziges Konto. Der Administrator wird in diesem Fall von Hand angelegt: den Dienst stoppen, in *pss.json* unter `web-server.login` einen Eintrag mit den Schlüsseln `id`, `login` und `password` ergänzen und den Dienst wieder starten — eine Änderung am laufenden Dienst überschreibt dieser aus dem Speicher ([API oder Einstellungsdatei](../extras/api.md#extras-api-vs-file)).

Aus der Existenz von *pss_last.json* folgen zwei Dinge. Erstens: das Löschen von *pss.json* setzt den Knoten nicht mehr auf einen leeren Stand zurück — der Dienst kommt auf *pss_last.json* hoch und schreibt sie in *pss.json* zurück. Einen Alarm gibt es dabei nicht, unbemerkt bleibt es aber auch nicht: im Protokoll bleibt ein Eintrag, und in der Weboberfläche erscheint eine Startmeldung. Um den Knoten wirklich zurückzusetzen, löscht man *pss.json* zusammen mit *pss_last.json* und *pss_back.json* — dann kommt der Dienst auf *pss_default.json* hoch. Alles Übrige im Einstellungsverzeichnis darf nicht angerührt werden: ohne *pss.properties* startet der Dienst überhaupt nicht. Zweitens: *pss_last.json* ist genau so gut, wie der letzte saubere Start frisch ist. Einstellungen, die über die Weboberfläche geändert wurden und nie einen Neustart überstanden haben, gibt es nur in *pss.json*, und ein Rückfall auf die letzte funktionierende Konfiguration bewahrt sie nicht.

**Eine nicht annehmbare Einstellungsdatei.** Konnte *pss.json* nicht gelesen werden, verschiebt der Dienst sie in das Archiv */opt/pss/config/bad/* unter dem Namen *pss_YYYYMMDD_HHMMSS.json*; Datum und Uhrzeit im Namen sind der Zeitpunkt der Archivierung in UTC, dieselbe Zeitrechnung, die das Protokoll standardmäßig verwendet. Danach setzt der Dienst das Laden in der üblichen Reihenfolge fort und speichert die funktionierende Konfiguration aus derjenigen Datei, die geladen wurde, erneut in *pss.json*. Die Einzelheiten (Name des Schlüssels, Beschreibung des Fehlers, Name der Datei im Archiv) werden in das Betriebsprotokoll geschrieben, und den Archivpfad nennt auch der Alarm über das fehlgeschlagene Laden direkt.

Das Laden wird abgebrochen bei: einem JSON-Syntaxfehler, dem Wert *null*, einer falschen Form des Wertes (ein Objekt dort, wo ein einzelner Wert erwartet wird, und umgekehrt), einer Zahl oder einem fremden Wort anstelle von *true* und *false*, einer zu langen Zeichenkette, einem fehlenden oder doppelten Bezeichner eines Array-Eintrags, der Wiederholung eines als eindeutig deklarierten Wertes. **Ein unbekannter Schlüssel verwirft die Datei nicht:** er wird ignoriert, im Protokoll erscheint eine Warnung mit Namen von Abschnitt und Schlüssel, und beim nächsten Speichern verschwindet der Schlüssel aus der Datei. Die vollständige Darstellung dessen, was der Dienst beim Lesen der Datei annimmt und was er ablehnt, steht in [Was der Dienst beim Lesen der Datei tut](../extras/config_file.md#extras-config-file-reading).

In das Archiv gelangt nur die Haupt-*pss.json*. Die Dateien *pss_last.json*, *pss_back.json* und *pss_default.json* werden bei Beschädigung nicht archiviert — die Protokolleinträge reichen für die Diagnose aus, und die Dateien selbst bleiben an ihrem Platz und können manuell korrigiert werden.

Liegt in */opt/pss/config/bad/* bereits eine Datei mit demselben Zeitstempel (etwa bei zwei fehlgeschlagenen Starts in ein und derselben Sekunde), erhält die neue ein Zählsuffix — *pss_YYYYMMDD_HHMMSS_2.json* und weiter; die zuvor gespeicherte Kopie geht dabei nicht verloren. Das Verzeichnis kann nicht überwuchern: mit dem Erscheinen einer neuen Kopie bleiben die zwanzig Dateien mit den höchsten Namen darin, die übrigen werden gelöscht. Für die Archive, die der Dienst nach der Zeit benennt, sind das genau die zwanzig jüngsten; fremde Dateien, die im Verzeichnis liegen bleiben, zählen ebenfalls mit und belegen diese Plätze, deshalb sollte in *bad/* nichts Überflüssiges aufbewahrt werden. Eine fehlgeschlagene Änderung — eine Kopie; ein Neustart für sich erzeugt keine neuen Kopien, denn die abgelehnte Datei ist bereits verschoben und an ihrer Stelle eine funktionierende geschrieben.

**Numerische Werte außerhalb des zulässigen Bereichs.** Wenn in der Einstellungsdatei ein numerischer Wert vorkommt, der kleiner als der zulässige Mindestwert oder größer als der zulässige Höchstwert für diesen Parameter ist, verwirft der Dienst die Datei nicht vollständig. Stattdessen wird eine Warnung in das Protokoll geschrieben, die den Parameternamen, den gelesenen Wert und die angewendete Grenze angibt, und der Wert selbst wird auf die nächstgelegene zulässige Bereichsgrenze (den Mindest- oder Höchstwert) gesetzt. Nach Abschluss des Ladevorgangs speichert der Dienst *pss.json* automatisch mit den bereits korrigierten Werten erneut, sodass diese Warnungen beim erneuten Start nicht mehr erscheinen.

Neben dem Protokoll meldet die Startbenachrichtigung des Dienstes in der Weboberfläche die Korrektur: Sie nennt die Anzahl der auf einen Grenzwert gesetzten Werte und verweist für Einzelheiten auf das Protokoll. Lesen Sie sie nach einem Update, das einen Bereich verengt hat: Die Korrektur erfolgt still, und bei einem Aufbewahrungsparameter bedeutet sie, dass die Daten jenseits der neuen Grenze beim nächsten Bereinigungslauf gelöscht werden.

Dieses Verhalten gilt nur beim erstmaligen Laden der Einstellungsdatei. Beim Ändern der Einstellungen über die Weboberfläche oder die HTTP API ([Steuerung über die HTTP API](../extras/api.md#extras-api)) werden Werte außerhalb des zulässigen Bereichs weiterhin mit einem Fehler abgelehnt — ohne automatische Korrektur.

Eine Ablehnung versetzt den Knoten dabei nicht in den vorherigen Zustand zurück: Was der Knoten vor dem ungültigen Wert gelesen hat, bleibt angewendet, und eine Meldung über ein abgelehntes Speichern bedeutet nicht, dass sich nichts geändert hat ([Wie Fehler eintreffen](../extras/api.md#extras-api-results)).

Die Datei von Hand bearbeiten, sie gegen die Schema prüfen und die Einstellungen auf einen anderen Knoten oder eine andere Version übertragen — [Die Einstellungsdatei pss.json](../extras/config_file.md#extras-config-file) und [Einstellungen bearbeiten, prüfen und übertragen](../extras/config_editing.md#extras-config-editing).
