이것은 내 서비스 파일입니다.
[Unit]
Description=Blabla service
Requires=network-online.target nfs-common.service
After=network-online.target nfs-common.service
[Service]
Type=oneshot
ExecStart=/path/to/script
RemainAfterExit=no
[Install]
RequiredBy=php5-fpm.service apache2.service nginx.service
활성화되면 유망해 보입니다.
# systemctl enable blabla.service
Created symlink from /etc/systemd/system/php5-fpm.service.requires/blabla.service to /etc/systemd/system/blabla.service.
Created symlink from /etc/systemd/system/apache2.service.requires/blabla.service to /etc/systemd/system/blabla.service.
Created symlink from /etc/systemd/system/nginx.service.requires/blabla.service to /etc/systemd/system/blabla.service.
그런 다음 다시 시작한 후 systemd-analyze
다음을 제공합니다.
# systemd-analyze blame
18.434s blabla.service
5.942s cloud-init.service
2.766s networking.service
1.671s apache2.service
1.398s cloud-init-local.service
1.276s newrelic-sysmond.service
856ms php5-fpm.service
586ms nginx.service
.....
문서에 따르면 Type=oneshot
:
oneshot은 단순하게 동작하지만 systemd가 후속 유닛을 시작하기 전에 프로세스가 종료되어야 합니다.
어떤 아이디어가 있나요?
답변1
RequiredBy=
이는 하나의 서비스가 다른 서비스를 시작해야 한다는 의미는 아닙니다.
에서는 man systemd.unit
설명서에 다음과 RequiredBy=
같이 나와 있습니다.
주요 결과는 나열된 장치가 시작될 때 현재 장치가 시작된다는 것입니다.
즉, 병렬로 시작될 수 있습니다. Before=
설치 섹션에 지시문이 있어야 한다고 생각합니다 . 의 문서에는 man systemd.unit
다음과 같은 내용이 있습니다 Before=
.
foo.service 장치에 Before=bar.service 설정이 포함되어 있고 두 장치가 모두 시작 중인 경우 foo.service가 시작될 때까지 bar.service 시작이 지연됩니다. 이 설정은 Requires=로 구성된 요구 사항 종속성과 독립적이며 직교합니다.