시스템화 된 네트워크 구성 종속성
systemd의 단위 순서에 영향을주는 것은 매우 쉽습니다. 반면에 완성 된 장치가 보장하는 것에주의해야합니다.
서비스 구성
현재 시스템에서 주문한 후에 network.target
는 실제 구성이 아니라 네트워크 서비스가 시작되었음을 보증합니다. network-online.target
그것을 달성 하기 위해서는 주문 후 가져와야합니다.
[Unit]
Wants=network-online.target
After=network-online.target
구형 시스템과의 호환성을 위해 network.target 다음에 주문해야 할 수도 있습니다.
[Unit]
Wants=network-online.target
After=network.target network-online.target
그것은 서비스의 단위 파일과 시스템을위한 것입니다.
현재 버전의 소프트웨어에서 구현
이제 network-online.target
예상대로 작동 하는지 또는 최소한 사용할 수 있는지 확인해야 합니다 network.target
.
현재 버전의 네트워크 매니저는 쿠폰 NetworkManager-wait-online.service
에 의해 당겨 도착하는이 network-online.target
서비스에 의해 때문에. 이 특수 서비스는 서비스가 시작되도록 구성된 모든 연결이 자동으로 성공, 실패 또는 시간 초과 될 때까지 기다립니다.
systemd-networkd 의 현재 버전은 모든 장치가 요청 된대로 구성 될 때까지 서비스를 차단합니다. 부팅시 적용되는 설정 만 지원한다는 점이 더 쉽다 (특히 systemd-networkd.service의 시작 시간).
완전성을 위해 /etc/init.d/network
Fedora 의 서비스는 현재 버전의 시스템화, 차단 network.target
및 간접적으로 차단 network-online.target
하고 서비스 를 해석 합니다. 스크립트 기반 구현의 예입니다.
데몬 기반이든 스크립트 기반이든 구현이 위의 네트워크 관리 서비스 중 하나로 작동하는 경우 네트워크 구성이 성공적으로 완료되거나 정당한 이유로 실패하거나 합당한 시간이 초과 될 때까지 서비스 시작이 지연됩니다 완료 할 프레임.
netctl 이 동일한 방식으로 작동 하는지 여부를 확인 하고 해당 정보가이 답변에 귀중한 추가 사항이 될 수 있습니다.
이전 버전의 소프트웨어에서 구현
나는 이것이 잘 작동하지 않는 충분히 오래된 버전의 시스템을 볼 것이라고 생각하지 않습니다. 그러나 최소한 network-online.target
존재하고 이후에 주문되는지 확인할 수 있습니다 network.target
.
이전에는 NetworkManager 가 최소한 하나의 연결 만 적용되도록 보장했습니다. 그리고 그것이 작동하기 위해서는 NetworkManager-wait-online.service
명시 적으로 활성화해야합니다 . 이것은 Fedora에서 오랫동안 수정되었지만 최근에 업스트림에만 적용되었습니다.
systemctl enable NetworkManager-wait-online.service
network.target 및 network-online.target 구현에 대한 참고 사항
혹시에 따라 소프트웨어를 만들 필요가 없습니다 NetworkManager.service
또는 NetworkManager-wait-online.service
다른 특정 서비스를 아니다. 대신, 모든 네트워크 관리 서비스는 이전 network.target
과 선택적으로 스스로 주문해야합니다 network-online.target
.
간단한 스크립트 기반 네트워크 관리 서비스는 종료하기 전에 네트워크 구성을 완료해야하며 이전 network.target
과 간접적으로 전에 자체적으로 주문해야합니다 network-online.target
.
[Unit]
Before=network.target
[Service]
Type=oneshot
ExecStart=...
RemainAfterExit=yes
데몬 기반 네트워크 관리 서비스는 network.target
그다지 유용하지 않더라도 먼저 주문해야 합니다.
[Unit]
Before=network.target
[Service]
Type=simple
ExecStart=...
데몬이 완료되기를 기다리는 서비스는 특정 서비스 이후와 그 이전에 주문해야합니다 network-online.target
. 그것은 사용한다 Requisite
각각의 네트워크 관리 서비스가 사용되지 않는 경우 즉시 실패 있도록 데몬 서비스에.
[Unit]
Requisite=...
After=...
Before=network-online.target
[Service]
Type=oneshot
ExecStart=...
RemainAfterExit=yes
패키지는 wants
디렉토리에 대기 서비스에 대한 심볼릭 링크를 설치하여 network-online.target
구성된 네트워크를 대기하려는 서비스에 의해 가져와야합니다.
ln -s /usr/lib/systemd/system/... /usr/lib/systemd/system/network-online.target.wants/
관련 문서
최종 노트
나는 당신이 질문했을 때 당신의 질문에 대답하는 데 도움이되었을뿐만 아니라, 업스트림 및 Linux 배포판의 상황을 개선하는 데 기여하여 원래의 글을 쓸 때보 다 더 나은 답변을 줄 수 있기를 바랍니다. .