네트워킹.서비스 ExecStartPre=(코드=종료, 상태=1/실패)

네트워킹.서비스 ExecStartPre=(코드=종료, 상태=1/실패)

질문이 있습니다. 이 경우 ExecStartPre=가 FAILURE 상태인 이유는 무엇입니까? 모든 것이 괜찮아 보이고 잘 작동하기 때문입니다. 무슨 일인지 설명해 줄 수 있는 사람이 있나요?

● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
   Active: active (exited) since Tue 2018-04-03 05:04:52 MSK; 3min 54s ago
     Docs: man:interfaces(5)
  Process: 473 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=0/SUCCESS)
  Process: 467 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle (code=exited, status=1/FAILURE)
 Main PID: 473 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 36864)
   CGroup: /system.slice/networking.service

апр 03 05:04:52 debian systemd[1]: Starting Raise network interfaces...
апр 03 05:04:52 debian systemd[1]: Started Raise network interfaces.

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.2  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::215:5dff:fe01:303  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:01:XX:XX  txqueuelen 1000  (Ethernet)
        RX packets 9032  bytes 6039361 (5.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6961  bytes 915411 (893.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 114  bytes 34267 (33.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 114  bytes 34267 (33.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

답변1

이는 단순히 명령이 상태 1로 종료되었음을 의미합니다.

/bin/sh -c '[ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle'

다음과 같은 경우 상태 1로 종료될 수 있습니다.

  • CONFIGURE_INTERFACES=no이미 설정되어 있습니다(/etc/default/networking에 있음).
  • ifquery --read-environment --list --exclude=lo빈 반환 또는
  • udevadm settle1번출구

처음 두 개는 실제로 오류 자체가 아닙니다. 주로 udevadm settle실행해야 할 시기를 결정하는 데 도움이 됩니다. 따라서 어느 정도 ExecStartPre가 status=1 "로 실패하여 실패하는 것이 "정상"이라고 생각할 수 있습니다. 어떻게든.

내 시스템을 검사한 결과 명령이 빈 출력을 반환한 것을 발견했습니다 ifquery. 따라서 이는 status=1에 대한 설명일 가능성이 높습니다.

if나는 데비안이 대신을 사용함으로써 이를 조금 더 좋게 만들 수 있다고 생각합니다 &&. 왜냐하면 이 경우 조건이 참이 아닐 경우 명령은 상태 1로 종료되지 않고 0으로 종료되기 때문입니다.

/bin/sh -c 'if [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ]; then udevadm settle; fi'

관련 정보