Java Subprocess не удается только при использовании в качестве SystemD ServiceLinux

Anonymous
Java Subprocess не удается только при использовании в качестве SystemD Service

Сообщение Anonymous »

Я пытаюсь запустить Socat как подпроцесс Java. Это две версии, которые я пробовал: < /p>

Код: Выделить всё

ProcessBuilder builder = new ProcessBuilder().command("socat", "-", "UNIX-SENDTO:" + socketPath);

Код: Выделить всё

ProcessBuilder builder = new ProcessBuilder().command("/usr/bin/socat", "-", "UNIX-SENDTO:" + socketPath);

В обоих случаях я могу запустить код вручную в терминале, как пользователь MyApp , и он работает, но когда я запускаю его как системную службу, я получаю одно из этих сообщений об ошибках соответственно.

Код: Выделить всё

Failed to notify watchdog: Cannot run program "socat": error=2, No such file or directory

Код: Выделить всё

Failed to notify watchdog: Cannot run program "/usr/bin/socat": error=2, No such file or directory

У меня есть этот файл блока:

Код: Выделить всё

[Unit]
Description=MyApp
[Service]
User=myapp
PermissionsStartOnly=true
WorkingDirectory=/opt/myapp/
Environment=DISPLAY=:0
ExecStartPre=/opt/myapp/myapp-prestart.py
ExecStart=/opt/myapp/myapp.sh
Restart=always
WatchdogSec=5
NotifyAccess=all

[Install]
WantedBy=graphical.target
< /code>
myapp.sh
-это простой запуск сценария Bash, содержащий Java -jar myApp.jar .
Что здесь может быть не так? Моей первой мыслью была среда, но это не должно быть проблемой с абсолютным путем. Есть ли что-то еще, что могло бы отличаться, когда процесс запускается SystemD? Никаких других приложений или сценариев оболочки, которые я создаю, не имеют проблем с поиском исполняемых файлов, с абсолютными путями или без него.

Подробнее здесь: https://stackoverflow.com/questions/797 ... md-service

Вернуться в «Linux»