Précédent: , Monter: Utilitaires   [Table des matières][Index]


9.15 Invoquer guix processes

La commande guix processes peut être utile pour les développeur·euse·s ou les personnes qui administrent des systèmes, surtout sur des machines multi-utilisateur·rice et sur les fermes de construction : elle liste les sessions actuelles (les connexions au démon), ainsi que des informations sur les processus en question22. Voici un exemple des informations qu’elle renvoie :

$ sudo guix processes
SessionPID: 19002
ClientPID: 19090
ClientCommand: guix environment --ad-hoc 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

Dans cet exemple, on voit que guix-daemon a trois clients directs : guix environment, guix publish et l’outil d’intégration continue Cuirass ; leur identifiant de processus (PID) est donné par le champ ClientPID. Le champ SessionPID fournit le PID du sous-processus guix-daemon de cette session particulière.

Le champs LockHeld montre quels éléments du dépôt sont actuellement verrouillés par cette session, ce qui correspond aux éléments du dépôt qui sont en train d’être construits ou d’être substitués (le champ LockHeld n’est pas montré si guix processes n’est pas lancé en root). Enfin, en regardant les champs ChildPID et ChildCommand, on comprend que ces trois constructions sont déchargées (voir Réglages du délestage du démon).

La sortie est dans le format Recutils pour qu’on puisse utiliser la commande recsel pour sélectionner les sessions qui nous intéressent (voir Selection Expressions dans GNU recutils manual). Par exemple, la commande montre la ligne de commande et le PID du client qui effectue la construction d’un paquet Perl :

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

Des options supplémentaires sont listées ci-dessous.

--format=format
-f format

Produire la sortie dans le format donné, parmi :

recutils

L’option par défaut. Elle affiche un ensemble d’enregistrement Session recutils qui incluent chacun ChildProcess comme champ.

normalized

Normalise les enregistrements de sortie en ensembles d’enregistrement (voir Record Sets dans GNU recutils manual). La normalisation en ensembles d’enregistrement permet de faire des jointures entre plusieurs types d’enregistrement. L’exemple ci-dessous liste le PID de chaque ChildProcess et le PID associé pour Session qui lance ChildProcess où la Session a été démarrée avec guix build.

$ 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

Notes de bas de page

(22)

Les sessions distantes, lorsque guix-daemon est démarré avec --listen en spécifiant un point d’entrée TCP, ne sont pas listées.


Précédent: , Monter: Utilitaires   [Table des matières][Index]