El servicio no se inicia cuando se utiliza la utilidad de servicio, pero funciona cuando se llama directamente al script de inicio.

El servicio no se inicia cuando se utiliza la utilidad de servicio, pero funciona cuando se llama directamente al script de inicio.

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_USERporque quiero que Mule se ejecute como usuario mule.

Cuando llamo, sudo service mule startno 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 sudependen de alguna manera del entorno.

Respuesta1

El problema era que el usuario muleno tenía un shell. Estaba fijado en /bin/false.

La -mbandera para supreserva el entorno, por lo que cuando llamé, sudo /etc/init.d/mule startla SHELLvariable de entorno se configuró y pasó a su.

Pero al llamar sudo service mule startse limpia el entorno. Desde servicela 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 SHELLvariable y el usuario muletampoco tiene un shell. Entonces parece que no se ejecuta ningún comando.

información relacionada