"ExecStart=/usr/bin/java -jar"를 사용하는 여러 서비스가 있고 가능한 한 늦게(네트워크, 방화벽 및 로그인 서비스 이후) 시작되기를 원합니다.
"After" 및 "Requires"의 [Unit]에 다양한 종속성을 나열해 보았지만 아무 것도 하지 않는 것 같습니다. 시작 로그를 보면 모든 종속성보다 먼저 서비스가 시작됩니다.
나는 (예를 들어) 시도했다.
[Unit]
Description=My Service 01
Requires=network.target
After=systemd-user-sessions.service network.target
부팅 순서에서 crond가 마지막에 시작되는 것을 볼 수 있어서 시도해 보았습니다.
[Unit]
Description=My Service 02
After=crond.service
차이는 없습니다. 내 서비스는 크론드보다 오래 전에 시작되었습니다.
어떤 제안이 있으십니까? 내가 뭐 잘못 했어요? 상황은 Red Hat 7.2와 7.3에서도 동일합니다.
답변1
이것아치 위키 sysyemd 페이지이에 대한 몇 가지 통찰력은 다음과 같습니다.
Wants= 및 Requires=는 After=를 의미하지 않습니다. 즉, After=를 지정하지 않으면 두 장치가 병렬로 시작됩니다.
각 종속성에 대해 다음을 추가해야 할 수도 있습니다.둘 다a Requires
및 After
이후에 시작하려는 각 단위:
[Unit]
Description=My Service 02
Requires=crond.service
After=crond.service