Linux: Como passar parâmetros para `service foo start` (na linha de comando)?

11

Eu gostaria de passar uma discussão para o serviço que estou iniciando. Por exemplo, iniciando um servidor no modo de depuração. Gostar,

service jboss-as start debug

Ou tal. Mas serviceparece não apoiar isso.

Existe alguma maneira? (Para RHEL 6, se isso for importante.)

Nota: Isso é semelhante ao Ubuntu / Linux: como os parâmetros de inicialização são normalmente definidos para scripts de inicialização (sysvinit)? mas não é o mesmo.

Ondra Žižka
fonte
Pare, o ubuntu não usa sysv, ele usa upstart.
Golfo Pérsico
1
Crie outro caso no script de inicialização. Exemplo: start-debuge você pode executar:/etc/init.d/jboss-as start-debug
Guntis 24/03

Respostas:

10

No RHEL, você tem a pasta / etc / sysconfig. Aqui você define os parâmetros de inicialização. E no seu script de inicialização você inclui algo como:

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

Verifique os serviços existentes para obter exemplos.

Para desenvolvimento, você pode colocar seus parâmetros de inicialização em uma variável exportada (por exemplo, em .bashrc), que você pode substituir manualmente a qualquer momento que desejar.

EDITAR

Se você realmente deseja usar, serviceexistem outras opções.

Seu script deve suportar pelo menos starte stop. Mas você também pode implementar um debugcomando. E inicie seu programa com:

service foo debug

Outra maneira será verificar o segundo argumento no seu script e você iniciar seu programa com:

service foo start debug

Modifique seu script init para algo como:

case "$1" in
  start)
        if [ "$2" = "debug" ]
        then
                start_debug
        else
                start
        fi
        ;;
Laurentiu Roescu
fonte
1
Quanto aos vars do ambiente exportado, isso parece não ser o caso - a página de manual do serviço diz que TERM e LANG são os únicos que são passados ​​para o script. Mas, claro, sempre se pode ignorar serviço executando /etc/init.d/MyNiftyService começar whatever2 whatever1 ...
Estrangeiro Forma de Vida
Vou recorrer ao desvio de Alien. Deseja colocá-lo como resposta?
Ondra Žižka 24/03/2013
5

No Ubuntu, os parâmetros de inicialização são normalmente encontrados em:

/etc/default/<service_name>
EEAA
fonte
2
Certo, mas não quero mudar isso toda vez que preciso de uma mudança ... Durante o desenvolvimento, é bastante frequente. E eu preciso do RHEL 6. Editou a pergunta.
Ondra Žižka
0

Gostaria de obter parâmetros adicionais de um arquivo específico do sistema após verificar sua existência, conforme sugerido acima.

Não gosto de adicionar opções adicionais à inicialização do serviço.

Amar
fonte