Bonjour,
La fonction ps retourne la liste des processus en cours mais je ne trouve pas d’option qui permette d’afficher le container éventuel dans lequel tourne les processus. Y a-t-il une option de ps que je n’ai pas trouvée? Une autre commande?
Merci d’avance.
Bonjour,
Tu peux faire afficher le cgroup par ps
, les processus d’un conteneur docker par exemple sont dans un groupe de contrôle séparé.
Par exemple j’ai lancé un conteneur docker dans lequel j’ai démarré le serveur openssh-server, je repère son PID:
alex-boulot@debian-probook:~$ sudo ps aux | grep sshd
root 708 0.0 0.0 15948 4520 ? Ss 01:30 0:00 /usr/sbin/sshd -D
root 21570 0.0 0.0 15856 2540 ? Ss 16:31 0:00 /usr/sbin/sshd
alex-bo+ 21775 0.0 0.0 6092 824 pts/4 S+ 16:36 0:00 grep sshd
Du coup je sais que c’est le processus 21570, vu l’heure, le 708 est le PID du serveur SSH de ma machine hôte.
Tu peux comparer les 2 sorties de ps:
alex-boulot@debian-probook:~$ sudo ps -o cgroup 21570
CGROUP
11:perf_event:/docker/9c8cd08741c8e0180c10c18b97536cdf78af36d8d9294e8dccc6dcadd67271d6,10:devices:/docker/9c8cd08741c8e0180c10c18b97536cdf78af36d8d9294e8dccc6dcadd67271d6,9:blk
alex-boulot@debian-probook:~$ sudo ps -o cgroup 708
CGROUP
10:devices:/system.slice/ssh.service,9:blkio:/system.slice/ssh.service,7:cpu,cpuacct:/system.slice/ssh.service,5:pids:/system.slice/ssh.service,3:memory:/system.slice/ssh.servi
Je t’avoue que la sortie de ces commandes reste assez obscure pour moi, mais on voit qu’il y a « docker » dans la sortie de la 1ère commande.
Tu dois pouvoir bricoler quelque chose avec ps pour afficher les cgroup de tous les processus et filtrer la sortie selon qu’elle contienne « docker » ou non. Je ne sais pas ce que ça vaut comme technique, c’est surtout une idée comme ça.
PS: si tu connais le PID du processus, systemctl status affiche aussi le CGroup:
alex-boulot@debian-probook:~$ systemctl status 21570
● containerd.service - containerd container runtime
Loaded: loaded (/lib/systemd/system/containerd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-16 23:31:17 CEST; 17h ago
Docs: https://containerd.io
Process: 689 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
Main PID: 698 (containerd)
Tasks: 30
Memory: 65.8M
CGroup: /system.slice/containerd.service
├─ 698 /usr/bin/containerd
├─21088 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/9c8cd08741c8e0180c10c18b97536cdf78af36d8d9294e8dccc6dcadd672
├─21104 bash
├─21243 /bin/bash
└─21570 /usr/sbin/sshd
De même, systemctl status containerd
affiche les PID de ses processus fils, qui sont donc exécutés dans un conteneur.
Sinon le but est de tracer tes containers, avec docker tu as la possibilité de passer par un docker ps ou un docker ps -a.
un gros +1 pour le systemctl status sur le pid
Merci à vous deux Sputnik93 et Clochette
- ps -o cgroup permet de répondre à ma question
Par contre je n’utilise pas Docker ja vais regarder de ce côté ou installer lxc-ps?