Linux хранит
namespaces процесса в /proc/<PID>/ns/, а nsenter позволяет выполнить команду внутри выбранного namespace уже работающего процесса.Например, если сервис видит другую сеть, чем хост:
sudo nsenter -t 1842 -n ss -lntp
-t 1842 выбирает процесс, а -n подключает команду к его network namespace. В результате ss работает с тем же сетевым стеком, таблицами маршрутизации и интерфейсами, которые доступны целевому процессу.То же самое можно сделать с файловыми монтированиями:
sudo nsenter -t 1842 -m findmnt
А если для диагностики нужны сразу несколько namespaces:
sudo nsenter -t 1842 -m -n -p sh
Так можно получить
shell с mount, network и PID namespace нужного процесса и запускать внутри обычные ip, ss, findmnt, ps и другие диагностические инструменты.При этом
nsenter не создаёт новый namespace — он присоединяет запускаемую команду к уже существующему.🔥
nsenter особенно полезен, когда процесс изолирован namespaces, а внутри его окружения нет диагностических утилит: вместо установки инструментов туда можно зайти в нужный namespace с хоста и исследовать проблему на месте.🚪 Linux Ready | #совет
