virli/tutorial/5/cmpns.md
Pierre-Olivier Mercier c4bb727cd4 2021 tuto
2021-09-11 14:41:48 +02:00

1.1 KiB

Exercice : comparaison de namespace

Les namespaces d'un programme sont exposés sous forme de liens symboliques dans le répertoire /proc/<PID>/ns/.

Deux programmes qui partagent un même namespace auront un lien vers la même structure de données.

Écrivons un script ou un programme, cmpns, permettant de déterminer si deux programmes s'exécutent dans les mêmes namespaces.

Exemples

``` 42sh$ ./cmpns $(pgrep influxdb) $(pgrep init) - cgroup: differ - ipc: differ - mnt: differ - net: differ - pid: differ - user: same - uts: same ```
``` 42sh$ ./cmpns $(pgrep init) self - cgroup: same - ipc: same - mnt: same - net: same - pid: same - user: same - uts: same ```

Ici, self fait référence au processus actuellement exécuté (comme il existe un dossier /proc/self/, vous n'avez pas besoin de gérer de cas particulier pour ça !).

Et pourquoi pas :

``` 42sh# unshare -m ./cmpns $$ self - cgroup: same - ipc: same - mnt: differ - net: same - pid: same - user: same - uts: same ```