У меня возникли проблемы с запуском службы от имени конкретного пользователя (в Ubuntu 14.4), и я не уверен, в чем проблема. Я использую следующую команду для автозапуска jar-файла при запуске:
nohup ${JAVA_EXEC} -jar ${MICROSERVICE_HOME}/bin/${MICROSERVICE_JAR} server ${MICROSERVICE_CONF} 2>> /dev/null &
Это работает отлично, поэтому нет проблем с переменными и так далее. Что ж, этот скрипт выполняется реальным пользователем, которым в данном случае является root. Поскольку я не хочу рисковать, я хочу выполнить его как конкретный (уже существующий) пользователь. Обычно мой подход состоял бы в том, чтобы изменить команду to на:
nohup su some_user -c "${JAVA_EXEC} -jar ${MICROSERVICE_HOME}/bin/${MICROSERVICE_JAR} server ${MICROSERVICE_CONF}"
Но это не работает. Я не получаю никаких сообщений об ошибках (конечно, я пропустил перенаправление stderr для целей тестирования), а nohup.out пуст.
Я уже пробовал разные версии, например. замена двойных кавычек одинарными и маскировка «$» внутри команды. Согласно этой теме он должен работать с синтаксисом.
Ни одно из решений в этой теме не работает. Например.
su some_user -c "nohup ${JAVA_EXEC} -jar ${MICROSERVICE_HOME}/bin/${MICROSERVICE_JAR} server ${MICROSERVICE_CONF}" -> doesn't work
nohup runuser some_user c "nohup ${JAVA_EXEC} -jar ${MICROSERVICE_HOME}/bin/${MICROSERVICE_JAR} server ${MICROSERVICE_CONF}"-> doesn't work (the runuser commands doesn't exist).
Что мне не хватает?
Любая помощь очень ценится!