systemd에 지정된 프로세스는 데몬이어야 합니까?

systemd에 지정된 프로세스는 데몬이어야 합니까?

시스템이 자동으로 시작되고 충돌이 발생하면 다시 시작되도록 systemd에 추가하려는 서버가 있습니다.

서버는 데몬이어야 합니까?

답변1

예. 서비스 관리자(예: systemd)에 의해 시작된 프로세스는 데몬 컨텍스트에서 실행됩니다.

그러나 데몬이 실제로 무엇을 의미하는지 알고 있어야 합니다. 바흐를 인용하자면:

UNIX 시스템의 프로세스는 사용자 프로세스, 데몬 프로세스 또는 커널 프로세스일 수 있습니다. 일반적인 시스템의 대부분의 프로세스는 터미널의 사용자와 연결된 사용자 프로세스입니다. 악마프로세스는 어떤 사용자와도 연관되지 않지만 [...]와 같은 시스템 전체 기능을 수행합니다.

——모리스 J. 바흐(1986).UNIX 운영 체제 설계. 프렌티스 홀. ISBN 01320177571. 238쪽.

이는 프로그램이 분기되었는지 여부와는 아무런 관련이 없으며 프로세스가 사용자의 로그인 세션과 연결되어 있는지 여부와 관련이 있습니다. 시스템 전체 기능을 수행하고 사용자 로그인 세션과 연결되지 않아야 하는 서비스로 관리되는 프로그램을 원하는 경우 데몬 컨텍스트에서 실행할 수 있습니다. 이를 systemd 서비스 단위로 래핑하고 systemd를 사용하여 관리할 수 있습니다. (또는 다른 서비스 관리 도구 세트를 사용하여 유사한 작업을 수행할 수도 있습니다.)

(systemd의 개념은사용자별 서비스, 사용자 로그인 세션, X 서버, 사용자별 런타임 디렉터리, 사용자별 데스크톱 버스 에이전트 및 PAM과의 다소 복잡한 관계가 이 WWW 사이트의 많은 문제의 원인입니다. 위의 내용은 다음과 같습니다전체 시스템그러나 systemd의 서비스를 사용하면 아마도 그렇게 생각하고 있을 것입니다. )

물론 최상의 결과를 얻으려면 프로그램을 "데몬화"하도록 분기해서는 안 됩니다. "악마화"라는 개념은사용자프로세스가 생성될 수 있음악마프로세스. 이 답변의 범위를 벗어나는 이유로 1980년대 이후에는 그렇지 않았으며 아이디어에 결함이 있습니다. 어쨌든 systemd, daemontools, nosh toolset, perp, s6, runit 및 기타 서비스 관리 메커니즘에서 실행되는 모든 항목에는 완전히 중복됩니다. 이 유형의 서비스 관리자에 의해 생성된 프로세스는 다음과 같습니다.이미 여기에데몬 컨텍스트.

답변2

아니요, 프로세스가 데몬일 필요는 없습니다. 포그라운드에서 실행 중인 프로세스는 "단순" 유형의 시스템 서비스로 처리될 수 있습니다.

이것데비안 위키포그라운드에서 실행하는 것이 선호되며 대부분의 서비스는 "단순" 유형을 사용한다는 언급도 있습니다.


데몬으로 실행되는 프로세스는 일반적으로 하위 프로세스를 포크하여 시작됩니다. systemd를 사용하여 이러한 프로세스를 처리하려면 "포크" 유형의 서비스가 필요합니다.

"oneshot"과 같은 다른 유형도 있습니다. 보다systemd.service 매뉴얼 페이지자세한 내용은.

관련 정보