Я пытаюсь запустить Mule в Ubuntu 14.04 в качестве службы. Я создал следующий скрипт инициализации (/etc/init.d/mule
)
#!/bin/bash
JAVA_HOME=/usr/lib/jvm/java-8-oracle
PATH=$PATH:$JAVA_HOME/bin
# Set Mule related environment
MULE_HOME=/opt/mule
PATH=$PATH:$MULE_HOME/bin
RUN_AS_USER=mule
# Export environment variables
export JAVA_HOME MULE_HOME RUN_AS_USER PATH
# Invoke Mule
$MULE_HOME/bin/mule $1
Здесь я определяю некоторые переменные окружения, в частности RUN_AS_USER
, так как я хочу, чтобы Мул работал от имени пользователя mule
.
Когда я звоню sudo service mule start
, я ничего не вижу, но когда звоню sudo /etc/init.d/mule start
, Мул начинает нормально работать.
Если посмотреть на сценарий запуска для Mule, в строке 419 сценарий перезапускается, если его нужно запустить от имени другого пользователя.
RELAUNCH_CMD="$REALPATH $@"
su -m $RUN_AS_USER -c "$RELAUNCH_CMD"
Почему при непосредственном вызове сценария инициализации Mule запускается нормально, но при использовании служебной утилиты ничего не происходит? Страница man для службы говорит, что она удаляет большинство переменных окружения. Поэтому я предполагаю, что вызов su
как-то зависит от окружающей среды.
Проблема состояла в том, что у пользователя mule
не было оболочки. Это было установлено на /bin/false
.
Эти -m
флаг для su
сохраняет среду, поэтому когда я звонил sudo /etc/init.d/mule start
SHELL
, переменная среды была установлена и передана к su
.
, Но при вызове sudo service mule start
среда убрана. От service
страница справочника:
услуга работает System V init сценарий или новомодное задание в максимально предсказуемой среде, удаляя большинство переменных среды и с текущим рабочим набором каталога к/.
Поэтому среда не содержит SHELL
, у переменной и пользователя mule
нет оболочки также. Таким образом, никакая команда не выполняется, это кажется.
sudo apt install gvfs-common
. Вы don' t должны помнить загадочное имя. Просто найдите его в/var/run
папка одно время. It' s не как было бы много файлов там. Тогда свяжитесь с ним незагадочным именем. Незагадочное имя - все, что необходимо было бы помнить. Все шаги, которые Вы делаете теперь, создавая пути и конфигурацию, являются загадочными, но как только Вы настраиваете ее однажды, Вы don' t должны помнить все вещи, в которых необходимо ввести как с проблемами you' ре, первоначально имеющее. – L. D. James 15 February 2017 в 07:04