Боже мой, здесь много чего не так.
Вы не используете свою службу напрямую; но вместо этого ваш служебный блок запускает оболочку, которая интерпретирует rc.local в рабочем каталоге /etc. Это несмотря на то, что у systemd есть предварительно поставленный сервисный модуль для запуска /etc/rc.local, если он действительно хочет. (rc.local - это механизм, который трижды был заменен на Ubuntu, сначала на van Smoorenburg rc, затем на выскочку, затем на systemd.) Но /etc/rc.local также не выполняет вашу службу. Вместо этого он вызывает sudo, несмотря на то, что он уже работает как суперпользователь. Это в свою очередь запускает (второй) скрипт из /etc/rcS.d, несмотря на то, что каталог является символической фермой ссылок, которая не должна содержать фактические rc файлы сценариев. Этот скрипт выполняется вручную d & aelig; mons, который systemd явно уже работает как фактические службы. Он считает, что рабочий каталог должен быть /new не /etc. Но даже это не ваше служение. Вместо этого он открывает оболочку для интерпретации третьего скрипта с именем StartServer. Он не использует exec для наложения себя. Он использует & для запуска этой оболочки асинхронно. Этот четвертый скрипт затем разворачивает и запускает программу Java. Он также не использует exec для наложения себя. И обледенение на торте состоит в том, что он также использует & для запуска этой программы Java асинхронно.Ничего из этого не требуется.
И вы, по всей видимости, не проложили его в середине механизма переустановки MAC-адресов в клонированных виртуальных машинах.
[Unit] Documentation=https://askubuntu.com/a/831314/43344 After=udhcpd.service [Service] WorkingDirectory=/new ExecStart=/jre/jdk1.8.0_101/jre/bin/myserver -Xrs -Xmx1000m -jar /new/MyServer.jar nowd [Install] WantedBy=multi-user.targetТакже очевидно, что добавление After= необходимо для того, что оно записывает файл den-routes, который ожидает ваш d & aelig; mon; вы, однако, не предоставляете никакой информации, чтобы определить, что это такое.