1.3 KiB
1.3 KiB
::::: {.exercice}
Comparaison de namespace -- cmpns.sh
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. On ignorera les
namespaces *_for_children, car ils ne font pas partie du cycle d'exécution
que l'on cherche à comparer.
Exemples
```
42sh$ ./cmpns $(pgrep influxdb) $(pgrep init)
- cgroup: differ
- ipc: differ
- mnt: differ
- net: differ
- pid: differ
- time: same
- user: same
- uts: same
```
\
```
42sh$ ./cmpns $(pgrep init) self
- cgroup: same
- ipc: same
- mnt: same
- net: same
- pid: same
- time: 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
- time: same
- user: same
- uts: same
```
:::::