Vorige: , Nach oben: Zubehör   [Inhalt][Index]


10.16 guix processes aufrufen

Der Befehl guix processes kann sich für Entwickler und Systemadministratoren als nützlich erweisen, besonders auf Maschinen mit mehreren Nutzern und auf Erstellungsfarmen. Damit werden die aktuellen Sitzungen (also Verbindungen zum Daemon) sowie Informationen über die beteiligten Prozesse aufgelistet24. Hier ist ein Beispiel für die davon gelieferten Informationen:

$ sudo guix processes
SessionPID: 19002
ClientPID: 19090
ClientCommand: guix shell python

SessionPID: 19402
ClientPID: 19367
ClientCommand: guix publish -u guix-publish -p 3000 -C 9 …

SessionPID: 19444
ClientPID: 19419
ClientCommand: cuirass --cache-directory /var/cache/cuirass …
LockHeld: /gnu/store/…-perl-ipc-cmd-0.96.lock
LockHeld: /gnu/store/…-python-six-bootstrap-1.11.0.lock
LockHeld: /gnu/store/…-libjpeg-turbo-2.0.0.lock
ChildPID: 20495
ChildCommand: guix offload x86_64-linux 7200 1 28800
ChildPID: 27733
ChildCommand: guix offload x86_64-linux 7200 1 28800
ChildPID: 27793
ChildCommand: guix offload x86_64-linux 7200 1 28800

In diesem Beispiel sehen wir, dass guix-daemon drei Clients hat: guix environment, guix publish und das Werkzeug Cuirass zur Kontinuierlichen Integration. Deren Prozesskennung (PID) ist jeweils im ClientPID-Feld zu sehen. Das Feld SessionPID zeigt die PID des guix-daemon-Unterprozesses dieser bestimmten Sitzung.

Das Feld LockHeld zeigt an, welche Store-Objekte derzeit durch die Sitzung gesperrt sind, d.h. welche Store-Objekte zurzeit erstellt oder substituiert werden (das LockHeld-Feld wird nicht angezeigt, wenn guix processes nicht als Administratornutzer root ausgeführt wird). Letztlich sehen wir an den Feldern ChildPID und ChildCommand oben, dass diese drei Erstellungen hier ausgelagert (englisch „offloaded“) werden (siehe Auslagern des Daemons einrichten).

Die Ausgabe ist im Recutils-Format, damit wir den praktischen recsel-Befehl benutzen können, um uns interessierende Sitzungen auszuwählen (siehe Selection Expressions in GNU recutils manual). Zum Beispiel zeigt dieser Befehl die Befehlszeile und PID des Clients an, der die Erstellung des Perl-Pakets ausgelöst hat:

$ sudo guix processes | \
    recsel -p ClientPID,ClientCommand -e 'LockHeld ~ "perl"'
ClientPID: 19419
ClientCommand: cuirass --cache-directory /var/cache/cuirass …

Weitere Befehlszeilenoptionen folgen.

--format=Format
-f Format

Die Ausgabe im angegebenen Format generieren, was eines der Folgenden sein muss:

recutils

Diese Option entspricht der Vorgabe. Sitzungen werden als „Session“-Datensätze im recutils-Format ausgegeben; dabei steht jeweils ein Feld ChildProcess für jeden Kindprozess.

normalized

Normalisiert die ausgegebenen Datensätze nach Typ (als „Record Sets“, siehe Record Sets in Handbuch von GNU recutils). Dadurch, dass die Datensatztypen in der Ausgabe stehen, wird eine Verknüpfung („Join“) zwischen den Datensatztypen möglich. Im folgenden Beispiel würde die PID jedes Kindprozesses (mit Typ ChildProcess) mit der PID der ihn erzeugt habenden Sitzung (Typ Session) angezeigt, vorausgesetzt die Sitzung wurde mit guix build gestartet.

$ guix processes --format=normalized | \
    recsel \
    -j Session \
    -t ChildProcess \
    -p Session.PID,PID \
    -e 'Session.ClientCommand ~ "guix build"'
PID: 4435
Session_PID: 4278

PID: 4554
Session_PID: 4278

PID: 4646
Session_PID: 4278

Fußnoten

(24)

Entfernte Sitzungen, wenn guix-daemon mit --listen unter Angabe eines TCP-Endpunkts gestartet wurde, werden nicht aufgelistet.


Vorige: , Nach oben: Zubehör   [Inhalt][Index]