시스템 시작 시 서비스 종속성을 다시 계산하도록 systemd에 지시하는 방법을 찾고 있습니다. 특히, 다른 서비스를 활성화하고 나중에 동일한 시작 순서로 두 번째 서비스를 시작하려면 하나의 서비스가 필요합니다. 이는 자동화된 배포 프로세스의 일부입니다. 부팅 프로세스 초기에 시스템이 처음 부팅되면 자동으로 구성됩니다. 취할 수 있는 단계 중 하나는 추가 서비스를 활성화하는 것입니다. 불행하게도 해당 단계의 변경 사항은 다음 재부팅까지 적용되지 않는 것 같습니다. 초기 배포 후 컴퓨터를 다시 시작하는 것은 옵션이 아닙니다.
내가 달성하고 싶은 것에 대한 일반적인 아이디어는 다음과 같습니다.
/etc/systemd/system/firstboot.service:
[Unit]
Description=Enable MyService
DefaultDependencies=no
After=sysinit.target
Before=basic.target
[Service]
Type=oneshot
ExecStart=/bin/systemctl enable myservice.service
ExecStartPost=/bin/systemctl disable firstboot.service
[Install]
RequiredBy=basic.target
/etc/systemd/system/myservice.service:
[Unit]
Description=MyService
[Service]
Type=simple
ExecStart=/usr/local/bin/myservice
[Install]
WantedBy=multi-user.target
안타깝게도 예상대로 작동하지 않습니다. 서비스가 활성화되었지만 이전에는 시작되지 않았습니다 multi-user.target
.
$ systemctl status myservice
myservice.service - MyService
Loaded: loaded (/etc/systemd/system/myservice.service; enabled)
Active: inactive (dead)
systemctl isolate multi-user.target
머신을 재부팅하여 강제로 부팅할 수 있습니다.
systemctl daemon-reload
추가 및/또는 systemctl daemon-reexec
/ ExecStart
를 ExecStartPost
시도 했지만 firstboot.service
아무 것도 작동하지 않는 것 같습니다.
부팅 경로를 다시 계산하고 부팅 시 변경 사항을 포함하도록 systemd에 지시할 수 있는 방법이 있습니까? 아니면 서비스를 강제로 시작하려면 시작 프로세스 후반에 뭔가를 해야 합니까?