Всем, кто пытается запустить приложение Java из службы systemd и получает ту же ошибку, связанную с библиотекой libjli.so
, читайте дальше.
В настоящее время для Fedora существует открытая ошибка:
Ошибка 1358476 — SELinux не позволяет systemd выполнять службы на основе Java -
В результате SELinux молча ограничивает доступ к этой библиотеке. Поскольку сообщения об отказе в AVC нет, вы не можете исправить его с помощью контекста или изменения политики.
Я обнаружил, что добавление файла /etc/ld.so.conf.d/
, содержащего папку вашего libjli.so
файла, является одним из обходных путей:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc26.x86_64/jre/lib/amd64/jli/
А потом бегом
ldconfig
Но это довольно грязно...
Лучше использовать /bin/bash -c
для запуска процесса Java в вашем сервисном файле:
ExecStart=/bin/bash -c "/usr/bin/java -Xmx1024m -jar myApp.jar NONINTERACTIVE"
Пока проблема не будет устранена....
Также может работать
sed -r 's/vlan/\x01/;s/(([0-9]{1,3}[.]?){4})\/.*\x01/\1...vlan/' file
Используйте заполнитель для первого vlan
, чтобы обойти жадность sed
. И да, есть небольшая уязвимость от "необязательной" точки в IP. При необходимости используйте более сложное регулярное выражение.
sed 's/\(.*[0-9]\)\/.* \(vlan.*\)/\1REPLACEMENT\2/' file
Соответствует первому вхождению /
по предшествующему номеру и первому вхождению vlan
по пробелу.