설치된(시작되지 않은) 시스템에서 시스템 서비스를 생성하는 "올바른 방법"은 무엇입니까?

설치된(시작되지 않은) 시스템에서 시스템 서비스를 생성하는 "올바른 방법"은 무엇입니까?

거기에 많은 지침이 있습니다기본 시스템 서비스 파일 생성, 그러나 그들은 (그렇게 해야 합니다) systemctl daemon-reload및 을 다이얼하도록 지시하는 것 같습니다 systemctl enable. 마운트되었지만 시작되지 않은 드라이브에 서비스를 추가해야 하는 경우(시스템 오케스트레이션을 생각해 보세요), 파일 시스템(파일, 디렉터리, 심볼릭 링크)에 쓰는 것만으로 이를 어떻게 수행할 수 있습니까?

나는 "당신의 X가 어디에 사는지에 따라 다르다"는 것이 있을 것이라고 확신하며 괜찮습니다. 이식성이 제한되거나 없을 수 있습니다. 나는 단지 내 계획이 효과가 있는지 확인하고 싶을 뿐입니다.

계획은 다음과 같습니다:

  1. 서비스 파일 쓰기/usr/lib/systemd/system/
  2. 이에 대한 심볼릭 링크는 다음에서 비롯됩니다./etc/systemd/system/multi-user.target.wants/

답변1

기본적으로 제안한 내용이 systemctl enable작동하는 방식은 [Install]서비스 파일 섹션을 살펴보고 .target.wants로 표시된 적절한 디렉터리 에 심볼릭 링크를 추가합니다 WantedBy=. ~에 따르면매뉴얼 systemd.unit페이지systemctl, 수행 방법을 복제하려면 다른 지침도 살펴보는 것이 좋습니다 .

  • Alias=장치와 동일한 디렉터리에 심볼릭 링크를 생성합니다.
  • RequiredBy=.target.requires적절한 디렉토리에 심볼릭 링크를 만듭니다.
  • Also=관련 장치 설치(각 링크가 어떤 장치를 설치하는지 확인)
  • DefaultInstance=인스턴스 유닛의 기본 이름(예: -> )을 사용하여 심볼릭 링크를 추가합니다.multi-user.target.wants/[email protected][email protected]

그러나 완전히 다른 아키텍처용 파일 시스템을 설치하지 않는 한 이러한 파일 시스템을 수동으로 생성할 필요는 없습니다. systemctl유닛 파일은 현재 실행 중이 아니더라도 문제 없이 설치/제거될 수 있으므로 systemd및(올바른 디렉터리 루트에서 실행하는 경우)를 사용하는 데 문제가 없어야 합니다. 물론 데몬이 없기 때문에 실행할 필요가 없습니다! 나는 젠투 설치가 끝날 때 부팅 장치(예: 친구 등)를 추가하기 위해 이 방법을 사용했는데 아무런 문제 없이 작동했습니다.systemctl enabledisablechrootdaemon-reloadsystemd-networkd

답변2

systemctl enable로고와 함께 사용됩니다 --root. 이 플래그는 장치가 파일을 검색하는 루트 디렉터리를 설정할 뿐만 아니라, systemctl시스템 데몬과 통신하지 않고 파일 시스템이 직접 작동하도록 지시합니다.

관련 정보