init 프로세스는 Linux 시스템의 모든 프로세스의 조상으로 존재합니다. 이 프로세스에는 어떤 종류의 IPC 진입점이 있습니까? 어떤 이유로 다른 프로세스가 init로 IPCing되고 있습니까?
답변1
프로세스와 절차를 혼동하지 마십시오. 하나의 프로세스 #1이 있지만 여러 다른 프로그램 중 하나를 실행할 수 있습니다.
systemd
systemd 패키지의 프로그램을 실행 중인 경우 :- 내부 시스템 API가 있습니다D-Bus를 통한 액세스는 안정성이 보장되지 않으며 systemd 패키지 이외의 용도로 사용하기에 적합하지 않습니다.
- 수많은 신호에 반응합니다.,
SIGWINCH
~에 이르기까지.SIGPWR
SIGRTMIN + 4
- 실행 중이라면
system-manager
프로그램스낵백:systemd
해당되는 경우 동일한 의미를 갖는 식별된 신호의 상당한 하위 집합에 응답합니다 .
init
시작부터 프로그램을 실행하는 경우 :- 내부 upstart API가 있습니다., D-Bus를 통해 액세스할 수 있습니다.
- FIFO에서 명령 메시지를 읽습니다
initctl
. - 그것은 작은 신호 세트에 반응합니다.
- Joachim Nilsson을 실행 중인 경우
finit
:- FIFO에서 명령 메시지를 읽습니다
initctl
. - 그것은 반응한다작은 신호 세트.
- FIFO에서 명령 메시지를 읽습니다
- System 5를 실행 중인 경우 다음을 수행
init
하십시오.- FIFO에서 명령 메시지를 읽습니다
initctl
. - 아주 작은 신호 세트에 반응합니다.
- FIFO에서 명령 메시지를 읽습니다
몇 가지 참고사항:
- 신호 API는 신호를 프로세스 #1로 보내는 것에 의해 시행됩니다. 여기에는
SIGWINCH
,SIGINT
, 및 와 같은 항목을 보내는 운영 체제 커널SIGPWR
과 널리 사용되는 다양한 시스템 유틸리티가 포함됩니다.systemd
둘 다 시스템 끄기 및 전원 끄기와 같은 시스템 상태 변경을 명령하는 신호를 사용하여 이 기능을 확장합니다 .system-manager
- 모든 프로그램이 시스템별 신호 전체를 지원하는 것은 아닙니다.
SIGPWR
예를 들어, 신생 기업에서는 응답을 언급하지 않았습니다. finit
SIGSTOP
및 를 포함하는 다양한 비체계적 강제 확장 신호 세트를 식별합니다SIGCONT
.
initctl
systemd 패키지는 프로세스 #1로 실행되는 프로그램에서 FIFO API를 구현하지 않지만 다음을 제공합니다.호환성 스페이서존재하다다른프로세스에서는 메커니즘을 기본 시스템 메커니즘으로 변환하는 다른 프로그램을 실행합니다. (nosh 도구 세트에는 자체initctl-read
호환성 심은 nosh 도구 세트 시스템 관리를 위한 기본 메커니즘으로 유사하게 변환됩니다. )initctl
실제로init
다른 시스템(만약 그렇다면)은 제한된 하위 호환성 메커니즘으로 실행 수준 개념을 구현하기 때문에 System V 외에는 기본 시스템이 아닙니다.- 해당 프로그램의 시작 매뉴얼 페이지에
init
나와 있듯이initctl
메커니즘은 잘 문서화되어 있지 않습니다. 심지어 System V 사람들도 System V 패키지에 있는 것만 사용해야 한다고init
사람들에게 말하고 있습니다 .init
게다가 Debian System V 관리자는/dev
이를/run
.
그렇습니다. 프로그램은 프로세스 #1을 사용하여 IPC를 수행합니다. 그렇게 하는 이유는 다양합니다.
- 이
systemd
프로그램은 System Manager, Service Manager, Control Group Manager의 조합이므로 프로그램은 IPC를 사용하여 #1을 다양한 용도로 처리합니다. 누보 부자의 경우에도 마찬가지입니다init
. - 전채 요리의 경우
system-manager
대신제공하다service-manager
관리는 자체(daemontools 호환) API를 사용하여 다른 프로그램(프로세스의 다른 프로그램( ) 에 의해 수행됩니다 . 따라서 IPC에 프로세스 #1을 사용하는 유일한 이유는 다음과 같습니다.시스템 상태(예를 들어) 머신 재부팅과 같은 관리.
전부는 아니지만 많은 목적을 위해 프로그램이 프로세스 # system-manager
1 보다 다른 API를 사용하고 기존 시스템 유틸리티를 사용하여 시스템 종료 및 다시 시작과 같은 작업을 수행하는 것이 좋습니다 .systemd