O script init.d obtém o código de retorno 1 ao chamar a si mesmo, como posso obter a saída?

2

A minha pergunta é: como posso modificar o script para que ele me diga o que está errado?

O cenário é este: Estou tentando fazer com que o Sonatype Nexus inicie como um serviço no Ubuntu 10.04, e isso simplesmente não funcionará.

(Não estou procurando ajuda sobre como executar o Nexus, mas sobre como obter uma saída útil de um script)

Funciona ao invocá-lo com

sudo /etc/init.d/nexus start

mas falha ao usar

sudo service nexus start

Eu executei o comando update-rc.d nele e fiz tudo de acordo com as instruções.

O script nexus init.d tem um ponto em que se chama quando detecta que deve ser executado como outro usuário ('nexus'):

su -m $RUN_AS_USER -c "\"$REALPATH\" "

que se expande para

su -m nexus -c '"/opt/nexus-2.0.2/bin/jsw/linux-x86-64/nexus" start'

ao adicionar o sinalizador de depuração -x ao script. Esse comando resulta no código de retorno 1. Ele nunca é executado - configurei o sinalizador -x debug no script, coloquei os comandos echo com o redirecionamento para o arquivo no início do script a ser rastreado, etc.

Não consigo obter nenhuma saída me dizendo por que o comando não será executado. Eu tentei anexar o redirecionamento ao arquivo após a linha de script acima, dentro das aspas, do lado de fora, de qualquer maneira que eu pudesse imaginar. Todas as informações que posso obter são inserindo uma linha

echo $?

após a linha su, que produz "1".

Existe uma maneira de ver o que acontece quando o comando su é executado?

    
por Per 31.03.2012 / 11:14

2 respostas

1

Pode ser que o usuário não tenha sido configurado como usuário do sistema corretamente. (Não use o comando adduser para isso.) Tente excluir o nexo do usuário e adicioná-lo novamente.

sudo groupadd nexus
sudo useradd -r -g nexus nexus

Não se esqueça de mostrar a home page dos binários nexus e o diretório sonatype-work e também o diretório em que o script coloca o arquivo PID para o novo usuário.

    
por kyl 26.06.2012 / 12:36
1

Eu tive esse problema quando bloqueei o usuário do nexus para usar /bin/false como shell. Como essa parte do script executa um comando shell passado para su como um argumento, isso fez com que o script simplesmente fosse direto para lá.

    
por Adrian 06.07.2012 / 11:42