일부 작업을 처리하기 위해 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
이것을 가리킨다.
이 링크를 사용하는 방법에 대한 자세한 내용은 링크의 매뉴얼 페이지를 참조하십시오.