systemd: 처음 부팅할 때 서비스를 자동으로 활성화하는 방법은 무엇입니까?

systemd: 처음 부팅할 때 서비스를 자동으로 활성화하는 방법은 무엇입니까?

일부 작업을 처리하기 위해 systemd를 사용하고 있으며 활성화되면 제대로 작동하는 서비스 파일이 있습니다.시스템 제어.

이제 처음 부팅할 때 자동으로 활성화하고 싶습니다.

대체 파일을 넣으면 /etc/systemd/system/파일의 동작이 동일한 이름으로 대체된다는 것을 알고 있습니다 /lib/systemd/system/.

서비스 파일을 일부 디렉토리에 배치하여 자동으로 활성화하는 방법이 있습니까?

답변1

중요한 팁:다음은 Ubuntu에서의 상황에 적용됩니다. 데비안에서처럼 작동해야 합니다. RPM 기반 배포예방하다기본적으로 자동으로 시작되지만 여전히 목표에 더 가까워질 수 있습니다.

대부분의 경우 원하는설치하다multi-user.target설치 부분에서는 다음과 같이 사용됩니다 .

[Install]
WantedBy=multi-user.target

이는 your-package.postinst스크립트가 자동으로 데몬을 시작한다는 의미입니다.

자신만의 스크립트가 있는 경우 your-package.postinst다음과 같이 Debian 도우미를 포함해야 합니다.

#!/bin/sh

#DEBHELPER#

...your own script here...

#DEBHELPER#모드가 없으면 패키저가 기본 코드를 추가하지 않으므로 데몬이 자동으로 활성화 및 시작되지 않습니다. 추가된 코드는 서비스를 활성화하고 시작합니다.

systemctl enable <service-name>
systemctl start <service-name>

위에 표시된 섹션이 static없는 서비스가 아닌 경우 . [Install]정적 제공을 사용하려면 특수 명령줄을 활성화해야 하며 기본적으로 사용할 수 없습니다.

systemctl add-wants multi-user.target <service-name>

보시다시피, 명령에는 섹션 이 없으면 multi-user.target기본값 (실제로 systemd)이 알지 못하는 내용이 포함되어 있습니다 .#DEBHELPER#[Install]


고쳐 쓰다:최신 버전에서는 systemd 확장이 이제 설치 메커니즘의 일부이며 다음은 더 이상 필요하지 않습니다. 우분투의 경우 22.04, 아마도 21.10부터 시작된 것 같습니다.

또한 패키지는 확장 기능을 사용하여 빌드되어야 합니다 systemd. 이는 debian/rules파일에 다음 콘텐츠가 포함되어 있음을 의미합니다.

%:
    dh $@ --with systemd --parallel

이것은 당신을 준비해야합니다.


혹시라도 원하신다면아니요새로 설치된 서비스를 시작하면 다음을 추가하여 실제로 이를 방지할 수 있습니다.

override_dh_installsystemd:
    dh_installsystemd --no-start --no-disable

시스템 요구 사항에 따라 혼합하고 일치시킵니다.

답변2

sudo systemctl enable <service-name>서비스는 시작 시 활성화됩니다.

http://www.dynacont.net/documentation/linux/Useful_SystemD_commands/유용한 명령 목록이 있습니다. 그리고 항상 man systemctl및 가 있습니다 man systemd.

답변3

당신이 사용할 수있는시스템 기본값기본적으로 활성화된 장치의 경우.

Systems.preset을 사용하면 일련의 장치를 활성화/비활성화할 수 있습니다.

vendor preset에서는 systemctl status unit이것을 가리킨다.

이 링크를 사용하는 방법에 대한 자세한 내용은 링크의 매뉴얼 페이지를 참조하십시오.

관련 정보