Заменить пользователя длинной командой не работает

У меня возникли проблемы с запуском службы от имени конкретного пользователя (в 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).

Что мне не хватает?

Любая помощь очень ценится!


person Damian    schedule 10.09.2015    source источник
comment
Вы можете спросить об этом на родственных сайтах: спросите Ubuntu или Unix и Linux. Из головы я бы попробовал проверить, что этот другой пользователь может сначала запустить команду java без проблем.   -  person LAFK says Reinstate Monica    schedule 11.04.2016