Рассмотрение 'состояния' networking.service в Ubuntu 16.04.4, это показывает, что "ExecStartPre" перестал работать:
● networking.service - Raise network interfaces
Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
Drop-In: /run/systemd/generator/networking.service.d
└─50-insserv.conf-$network.conf
Active: active (exited) since Tue 2018-04-10 00:47:02 EDT; 11h ago
Docs: man:interfaces(5)
Process: 735 ExecStart=/sbin/ifup -a --read-environment (code=exited,
status=0/SUCCESS)
Process: 731 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ]
&& [ -n "$(ifquery --read-environment --list --exclude=lo)" ]
&& udevadm settle (code=exited, status=1/FAILURE)
Main PID: 735 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/networking.service
Рассматриваемая проблема находится в отказе кода:
Process: 731 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ]
&& [ -n "$(ifquery --read-environment --list --exclude=lo)" ]
&& udevadm settle (code=exited, status=1/FAILURE)
После рытья в то, как networking.services сценарий является установкой, я нашел, что это - использование файл для установки среды за "$CONFIGURE_INTERFACES" в EnvironmentFile =-/etc/default/networking:
# Configuration for networking init script being run during
# the boot sequence
# Set to 'no' to skip interfaces configuration on boot
#CONFIGURE_INTERFACES=yes
Однако это отключено (прокомментированное), затем выполнив команду сценария вручную:
$ sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ]
Производит вывод:
: 1: [: пропавшие без вести]
Я также получаю тот же результат, если я установил среду на "да" с
export CONFIGURE_INTERFACES=yes
да: 1: [: пропавшие без вести]
Я не уверен, что точно результат этой строки кода, как предполагается, производит точно, чтобы иметь успешное выполнение. Заранее спасибо любому, который отвечает, как исправить это, или если это - что-то, что может быть проигнорировано.
Для получения дополнительной информации на (code=exited, status=1/FAILURE)
состояние ExecStartPre=
из networking.service см. https://unix.stackexchange.com/a/435190/281844.
Для записи это было зарегистрировано с Debian на https://bugs.debian.org/cgi-bin/bugreport.cgi? bug=894759 и я отправили им патч для фиксации его, таким образом, он мог бы закончить тем, что пробился полностью к Ubuntu и в конечном счете был зафиксирован :-)
Относительно Ваших тестов, пытающихся эмулировать команду, Вам нужны одинарные кавычки там (даже при том, что вывод systemd не показывает им там.)
Это было бы корректно:
sh -c '[ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ]'
Можно также видеть содержание файла /lib/systemd/system/networking.service
в Вашей системе или также выводе команды systemctl cat networking.service
для точного ExecStartPre=
команда, используемая той единицей.