systemd
부팅 시 시작하고 싶지만 DNS를 사용할 수 있는 후에만 시작하고 싶은 프로그램이 있습니다 .
서비스 파일은 다음에 따라 달라집니다 network-online.target
.
$ cat /etc/systemd/system/te-m-pi.service
[Unit]
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/te-m-pi
ExecStart=/opt/te-m-pi/te-m-pi.py
[Install]
WantedBy=default.target
그러나 시작되면 필요한 일부 호스트 이름을 확인할 수 없기 때문에 즉시 종료됩니다.
te-m-pi.py[399]: socket.gaierror: [Errno -2] Name or service not known
systemd[1]: te-m-pi.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Unit te-m-pi.service entered failed state.
Python 파일을 편집하고 time.sleep(10)
처음에 간단한 파일을 삽입하면 10초를 기다린 후 예상대로 행복하게 실행됩니다.
분명히 시작되면 네트워크가 아닙니다.하지만네트워크가 실제로 가동되고 구성된 후에만 시작 되도록 network-online.target
하려면 어떻게 해야 합니까?
저는 systemd 215-17+deb8u7을 사용하여 Raspbian 8 Jessie에서 실행하고 있습니다.
답변1
Ubuntu 20에서 동일한 문제가 발생하여 매우 혼란스러운 문제가 발생했습니다(예: NFS 자동 마운트가 무작위로 작동하지 않음). 네트워크는 실제로 온라인이지만 DNS 지원은 아직 사용할 수 없습니다. DNS 지원을 보장하려면 및 항목을 systemd-resolved.service
추가 하세요 .After
Wants