리눅스에는 다양한 프로세스가 존재한다.
그렇다면 리눅스에서 프로세스 간의 통신은 어떻게 이루어질까?
리눅스에는 기본적으로 D-Bus 라는 데몬이 실행되고있다.
D-Bus 는 여러 프로세스의 통신을 담당하는 데몬이다.
개인적으로는 프로세스 전용 API로 생각된다.
D-Bus와 교신해보도록 하자
dbus-send --print-reply --system --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager.GetDevices
해당 명령어를 사용하면 D-Bus 가 네트워크 디바이스의 목록을 응답한다.
만약 D-Bus가 작동하지 않는다면 프로세스간의 통신이 되지않아 상태정보나 관련 데이터를 주고 받을 수 없게 된다.
예를 들어 D-Bus가 작동하지 않고 JAVA 프로세스가 종료되었을때 systemd에서 리소스를 즉시 회수해야하지만 D-Bus가 없기 때문에 상태정보를 받지못해 즉시 리소스를 회수하지 못 할 수 있다. (OOM 발생 가능)
또한 nmcli 나 systemctl 을 통해 프로세스의 상태를 체크하는데도 문제가 생길 수 있다.
물론 D-Bus 데몬이 죽는 경우는 매우 드물다.
댓글(토론,비판,질문)은 환영입니다.
'OS > Linux' 카테고리의 다른 글
[Linux] Booting Process (0) | 2025.03.03 |
---|---|
[ 명령어 분석 ] top (1) | 2024.04.19 |