Команда в сервисе работает иначе, если выполняется в терминале

208
OrangePot

У меня есть файл войны, с которым я могу запустить: java -jar /opt/path/to/my.war

Эта же команда находится в файле для сервиса, который выглядит следующим образом:

[Unit] Description=My Service  [Service] WorkingDirectory=/opt/path/to/ ExecStart=/opt/path/to/jre8/jre/bin/java -jar /opt/path/to/my.war --spring.profiles.active=prod PIDFile=/opt/path/my.pid  [Install] WantedBy=multi-user.target 

Когда я запускаю service myservice startсервис, он запускается так же, как и при использовании только одной команды Разница в том, что при serviceзагрузке веб-страницы возникает ошибка в консоли браузера:

Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to: Error: [$injector:nomod] Module 'myApp' is not available! 

Браузер отображает пустую страницу.

Обратите внимание, что /optдоступно только через sudo su. Запуск команды только в suработах. Так что проблема в том, что что-то происходит по-другому, когда служба выполняет команду, но я не знаю, что ..

0
Когда вы запускаете его через службу, я предполагаю, что она запускается от имени пользователя root, а когда вы запускаете службу, она запускается как ваш пользователь, что может быть проблемой. Mikael Kjær 7 лет назад 0

1 ответ на вопрос

-1
shubham0d

Я думаю, что вы создаете файл модуля, и он должен использоваться с systemctl. Итак, попробуйте это systemctl start myservice.

запуск службы myservice, о которой упоминает OrangePot, будет делать то же самое на большинстве систем Mikael Kjær 7 лет назад 0

Похожие вопросы