Linux: ¿Cómo pasar parámetros a `service foo start` (en la línea de comando)?


11

Me gustaría pasar una discusión al servicio que estoy comenzando. Por ejemplo, iniciar un servidor en modo de depuración. Me gusta,

service jboss-as start debug

O tal Pero serviceparece no apoyar eso.

¿Hay alguna manera? (Para RHEL 6 si eso importa).

Nota: Esto es similar a Ubuntu / Linux: ¿cómo se definen típicamente los parámetros de inicio para los scripts de inicio (sysvinit)? Pero no es lo mismo.


Detente, ubuntu no usa sysv, usa upstart.
PersianGulf

1
Cree otro caso en el script de inicio. Ejemplo: start-debugy luego puede ejecutar:/etc/init.d/jboss-as start-debug
Guntis

Respuestas:


10

En RHEL tiene la carpeta / etc / sysconfig. Aquí define los parámetros de inicio. Y en su script de inicio incluye algo como:

if [ -f /etc/sysconfig/$prog ] ; then
    . /etc/sysconfig/$prog
fi

Verifique los servicios existentes para ver ejemplos.

Para el desarrollo, puede poner sus parámetros de inicio en una variable exportada (por ejemplo, en .bashrc) que puede anular manualmente en cualquier momento que lo desee.

EDITAR

Si realmente quieres usar servicehay algunas otras opciones.

Su secuencia de comandos debe admitir al menos starty stop. Pero también puedes implementar un debugcomando. Y comience su programa con:

service foo debug

Otra forma será verificar el segundo argumento en su script y comenzará su programa con:

service foo start debug

Modifique su script de inicio a algo como:

case "$1" in
  start)
        if [ "$2" = "debug" ]
        then
                start_debug
        else
                start
        fi
        ;;

1
En cuanto a los vars de entorno exportados, ese no parece ser el caso: la página de manual del servicio dice que TERM y LANG son los únicos que se pasan al script. Pero, por supuesto, siempre se puede omitir el servicio ejecutando /etc/init.d/MyNiftyService start whatever1 whatever2 ...
Alien Life Form

Recurriré al bypass de Alien. ¿Quieres ponerlo como respuesta?
Ondra Žižka

5

En Ubuntu, los parámetros de inicio generalmente se encuentran en:

/etc/default/<service_name>

2
Correcto, pero no quiero cambiar eso cada vez que necesito un cambio ... Durante el desarrollo es bastante frecuente. Y necesito RHEL 6. Edité la pregunta.
Ondra Žižka

0

Iría a buscar parámetros adicionales de un archivo específico del sistema después de verificar su existencia, como se sugirió anteriormente.

No me gusta agregar ninguna opción adicional al inicio del servicio.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.