Wie funktionieren Systemdienste in Snaps?

9

Beim Erstellen eines Snaps und gemäß der Syntax der Datei snapcraft.yaml kann das daemonSchlüsselwort hinzugefügt werden, um anzugeben, dass die App als Systemdienst ausgeführt wird. Als Beispiel für eine solche Erklärung:

apps:
  tinyproxy:
    command: ./launcher.sh
    daemon: simple
    plugs: [network,network-bind]

Was bedeutet es jedoch genau, im Handumdrehen ein Systemdienst zu sein? Das heißt, was ist ihr Lebenszyklus (starten, neu starten, stoppen ...)? Kann ich überwache sie mit den üblichen Werkzeugen in dem System ausgeführt wird ( ps, topusw.)?

David Planella
quelle

Antworten:

8

Von https://developer.ubuntu.com/de/snappy/build-apps/debug/

Testen eines Dienstes

Um einen Dienst zu testen, muss er zuerst installiert werden. Nach der Installation kann mit dem systemctlBefehl systemd überprüft werden, ob der Dienst wie erwartet gestartet und ausgeführt wird. Beispiel:

systemctl status snap.<name>.<appname>

Protokolle finden

Der journalctlBefehl kann verwendet werden, um die Nachrichten zu überprüfen, die der Dienst an stdout/ sendet stderr, zum Beispiel:

journalctl -u snap.<name>.<appname>

Dienste können zusätzliche Daten in syslog ( /var/log/syslog) oder in benutzerdefinierten Protokollverzeichnissen protokollieren. Beachten Sie, dass sich benutzerdefinierte Protokollverzeichnisse in einem Pfad befinden müssen, in den der Dienst (normalerweise SNAP_DATA) schreiben kann .

Einen Core Dump bekommen

Um Core-Dumps zu aktivieren, müssen Sie einen Ort konfigurieren, an den sie über sysfs geschrieben werden können. Zum Beispiel können Sie verwenden

$ echo "/tmp/core.%e.%p" > /proc/sys/kernel/core_pattern

um sicherzustellen, dass Ihre Coredumps in das /tmpVerzeichnis geschrieben werden, unabhängig davon, wo sich CWDder Prozess befand, der ein Signal empfangen hat.

Dholbach
quelle
Vielen Dank! Außerdem habe ich den Tipp erhalten, dass ein einfacher Weg zum Debuggen von Problemen mit einem Dienst, der nicht daemon: simplegestartet wird, darin besteht, die Zeile vorübergehend zu kommentieren , damit sie sich wie eine reguläre App verhält, und dann den "angehängten" Dienst manuell zu startensudo /snap/bin/<servicename>
David Planella
Ist es möglich, die Protokolle in eine benutzerdefinierte Datei anstatt in ein Journal umzuleiten?
Ankur Bhatia