
unshare -pmif
unshare -pmif 명령어에 사용된 각 옵션의 의미는 다음과 같습니다:
-p: PID (Process ID) 네임스페이스를 생성합니다. 이 옵션을 사용하면 새로운 프로세스 ID 네임스페이스가 만들어지며,
이 네임스페이스 안에서 생성된 프로세스들은 고유한 PID 공간을 가집니다. 따라서 같은 PID를 가지는 프로세스가 다른 네임스페이스에서 동시에 존재할 수 있습니다.
-m: 마운트(Mount) 네임스페이스를 생성합니다. 이를 통해 파일 시스템 마운트 포인트의 격리가 가능해지며, 네임스페이스
내부에서 수행된 마운트 작업은 다른 네임스페이스에 영향을 미치지 않습니다.
-i: IPC (Inter-Process Communication) 네임스페이스를 생성합니다. IPC 네임스페이스는 프로세스 간 통신
리소스(예: 메시지 큐, 세마포어, 공유 메모리 등)를 격리합니다.
-f: unshare 명령어 실행 후 새로운 프로세스(일반적으로 쉘)를 fork 합니다. 이 옵션이 없으면 unshare는 새 네임스페이스를
생성한 후에도 현재 프로세스(unshare 명령어를 실행한 쉘 또는 스크립트) 내에서 계속 실행됩니다. -f 옵션을 사용하면,
새 네임스페이스 내에서 새로운 프로세스가 시작되고, 이 프로세스가 새 네임스페이스의 "root" 프로세스가 됩니다.
결론적으로, unshare -pmif 명령어는 새 PID 네임스페이스, 마운트 네임스페이스, IPC 네임스페이스를 동시에 생성하고,
이 세 가지 네임스페이스가 적용된 새로운 프로세스(보통 새 쉘)를 fork하여 실행하는 것을 의미합니다.
이를 통해 격리된 환경에서 프로세스를 실행할 수 있으며, 컨테이너와 같은 기술의 기반 기능 중 하나로 사용됩니다.
그리고 나서

PID가 1로 주어진것을 확인 할 수 있습니다.
'unshare'로 인해 생성된 새로운 PID 네임스페이스에서 이 PID는 다를 수 있습니다.
ps aux | head -n5
시스템에서 실행 중인 프로세스 목록의 상위 5개를 출력합니다. 새로운 네임스페이스에서는 볼 수 있는 프로세스가 제한될 수 있습니다.
ls /proc
/proc 디렉토리의 내용을 나열합니다. /proc은 시스템 정보와 실행 중인 프로세스에 대한 정보를 포함하는 가상 파일 시스템입니다.
mount -t proc none /proc
새로운 네임스페이스에 맞게 /proc 파일 시스템을 새롭게 마운트합니다. 이렇게 함으로써 새로운 PID 네임스페이스에서 실행 중인 프로세스만 /proc을 통해 볼 수 있습니다.
ps aux | head -n5 (후속 단계)
/proc을 새롭게 마운트한 후에 실행 중인 프로세스 목록의 상위 5개를 다시 출력합니다. 이제 이 목록은 새로운 PID 네임스페이스 내의 프로세스만 보여줍니다.
이 과정을 통해, 사용자는 리눅스의 네임스페이스 기능을 이용해 시스템의 나머지 부분과 독립적으로 동작하는 격리된 환경을 만들고, 이 환경 내에서 실험하거나 특정 작업을 수행할 수 있습니다. 이는 컨테이너와 같은 가상화 기술의 기반 메커니즘 중 하나입니다.
| 유니온 마운트(Union mount)_OverlayFS, BTRFS (0) | 2024.03.14 |
|---|---|
| 네트워크 네임스페이스(Network Namespace)는 (0) | 2024.03.13 |
| Mount 네임스페이스 (0) | 2024.03.11 |
| 컨테이너를 구성하는 3가지 리눅스 기술 (0) | 2024.03.07 |
| SSH (Secure Shell)란? (0) | 2024.03.04 |