![systemd에서 서비스 시작](https://linux55.com/image/92340/systemd%EC%97%90%EC%84%9C%20%EC%84%9C%EB%B9%84%EC%8A%A4%20%EC%8B%9C%EC%9E%91.png)
systemd 서비스 파일을 에 배치했습니다 usr/lib/systemd/system/testfile.service
. 서비스 파일은 다음과 같습니다.
[Unit]
Description=Test service
[Service]
Type=notify
ExecStart=/bin/dd.sh
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target
두 가지 방법으로 부팅 시 서비스를 시작해 보았습니다.
- 에서 까지의 파일에 대한
/usr/lib/systemd/systemd
소프트 링크를 생성하고/etc/systemd/system/multi-user.target.wants
(수동으로 또는systemctl enable
명령을 사용하여) 시스템을 다시 시작했습니다.testfile
부팅 시 서비스가 성공적으로 시작되었습니다. After=testfile.service
및 등의 기존 실행 서비스 파일에 종속성을 만든Wants=testfile.service
다음 시스템을 다시 시작하면testfile
서비스가 성공적으로 시작됩니다.
그런데 위의 1, 2번 방법을 사용하지 않고 파일을 배치하면 /usr/lib/systemd/system
서비스가 시작되지 않습니다. 서비스 파일을 배치하는 것만으로도 /usr/lib/systemd/system/
Wants 디렉터리에 대한 소프트 링크를 만들거나 다른 서비스와의 종속성을 만들지 않고도 모든 서비스가 자동으로 시작될 수 있다고 생각합니다.
위의 방법 1이나 2를 사용하지 않고 시작 시 /usr/lib/systemd/system
디렉터리에 있는 서비스를 어떻게 시작할 수 있습니까?
또한 일부 서비스를 비활성화 및 활성화하기 위해 사전 설정 파일을 생성했지만 usr/lib/systemd/system-preset/
이러한 사전 설정 파일이 실행되지 않는 것 같습니다. 사전 설정 파일에서 비활성화한 서비스는 시작 후에도 계속 활성화됩니다. 이 문제를 디버깅하는 방법을 알려주십시오.
답변1
유닛 파일을 배치할 때 /usr/lib/systemd/system
간단히 추가하면 됩니다.도서관시스템에서 사용할 수 있는 장치 수입니다. 그러나 시스템에 실행을 지시하지 않았습니다.
일반적으로 systemctl enable myservice
. 이렇게 하면 수동으로 만든 심볼릭 링크가 효과적으로 생성됩니다.
부팅 시 시작할 장치를 부팅 프로세스에 알려주는 것이 바로 이 링크입니다.
이전 형식에 익숙하다면 init
이를 에 파일을 넣는 것과 동일하다고 생각할 수 있습니다 /etc/init.d
. /etc/rc3.d/S##myservice
링크를 추가하지 않으면 시작 시 시작되지 않습니다.
이제 경우에 따라 다른 서비스가 서비스에 따라 달라질 수 있으며 이로 인해 시작이 발생하지만 서비스에 종속된 서비스가 없으면 systemctl enable
.
답변2
저장해야 해사용자 정의 단위 파일은 에 있습니다 . 파일을 생성한 후 필요한 기호 링크를 생성하는 를 /etc/systemd/system/
사용하여 활성화해야 합니다 .systemctl enable name