![설치된(시작되지 않은) 시스템에서 시스템 서비스를 생성하는 "올바른 방법"은 무엇입니까?](https://linux55.com/image/130718/%EC%84%A4%EC%B9%98%EB%90%9C(%EC%8B%9C%EC%9E%91%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80)%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C%20%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94%20%22%EC%98%AC%EB%B0%94%EB%A5%B8%20%EB%B0%A9%EB%B2%95%22%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
거기에 많은 지침이 있습니다기본 시스템 서비스 파일 생성, 그러나 그들은 (그렇게 해야 합니다) systemctl daemon-reload
및 을 다이얼하도록 지시하는 것 같습니다 systemctl enable
. 마운트되었지만 시작되지 않은 드라이브에 서비스를 추가해야 하는 경우(시스템 오케스트레이션을 생각해 보세요), 파일 시스템(파일, 디렉터리, 심볼릭 링크)에 쓰는 것만으로 이를 어떻게 수행할 수 있습니까?
나는 "당신의 X가 어디에 사는지에 따라 다르다"는 것이 있을 것이라고 확신하며 괜찮습니다. 이식성이 제한되거나 없을 수 있습니다. 나는 단지 내 계획이 효과가 있는지 확인하고 싶을 뿐입니다.
계획은 다음과 같습니다:
- 서비스 파일 쓰기
/usr/lib/systemd/system/
- 이에 대한 심볼릭 링크는 다음에서 비롯됩니다.
/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 enable
disable
chroot
daemon-reload
systemd-networkd
답변2
systemctl enable
로고와 함께 사용됩니다 --root
. 이 플래그는 장치가 파일을 검색하는 루트 디렉터리를 설정할 뿐만 아니라, systemctl
시스템 데몬과 통신하지 않고 파일 시스템이 직접 작동하도록 지시합니다.