Précédent: Invoquer guix weather
, Monter: Utilitaires [Table des matières][Index]
guix processes
La commande guix processes
peut être utile pour les
développeur·euses 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 question28. Voici un
exemple des informations qu’elle renvoie :
$ 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
Dans cet exemple, on voit que guix-daemon
a trois clients
directs : guix shell
, 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 Utiliser le dispositif de déchargement).
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
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: Invoquer guix weather
, Monter: Utilitaires [Table des matières][Index]