systemd에서 서비스 시작

systemd에서 서비스 시작

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

두 가지 방법으로 부팅 시 서비스를 시작해 보았습니다.

  1. 에서 까지의 파일에 대한 /usr/lib/systemd/systemd소프트 링크를 생성하고 /etc/systemd/system/multi-user.target.wants(수동으로 또는 systemctl enable명령을 사용하여) 시스템을 다시 시작했습니다. testfile부팅 시 서비스가 성공적으로 시작되었습니다.
  2. 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

관련 정보