
estoy tratando de correrMulaen Ubuntu 14.04 como servicio. Creé el siguiente script de inicio ( /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
Aquí defino algunas variables de entorno, sobre todo RUN_AS_USER
porque quiero que Mule se ejecute como usuario mule
.
Cuando llamo, sudo service mule start
no veo que pase nada, pero cuando llamo sudo /etc/init.d/mule start
, Mule comienza a funcionar bien.
Mirando a laguión de iniciopara Mule, en la línea 419 el script se reinicia si es necesario ejecutarlo como otro usuario.
RELAUNCH_CMD="$REALPATH $@"
su -m $RUN_AS_USER -c "$RELAUNCH_CMD"
¿Por qué cuando se llama directamente al script de inicio, Mule comienza a funcionar bien pero cuando se usa la utilidad de servicio, no sucede nada? La página de manual del servicio dice que elimina la mayoría de las variables de entorno. Entonces supongo que las llamadas su
dependen de alguna manera del entorno.
Respuesta1
El problema era que el usuario mule
no tenía un shell. Estaba fijado en /bin/false
.
La -m
bandera para su
preserva el entorno, por lo que cuando llamé, sudo /etc/init.d/mule start
la SHELL
variable de entorno se configuró y pasó a su
.
Pero al llamar sudo service mule start
se limpia el entorno. Desde service
la página de manual:
El servicio ejecuta un script de inicio de System V o un trabajo de inicio en un entorno lo más predecible posible, eliminando la mayoría de las variables de entorno y con el directorio de trabajo actual configurado en /.
Por lo tanto, el entorno no contiene una SHELL
variable y el usuario mule
tampoco tiene un shell. Entonces parece que no se ejecuta ningún comando.