o comando em / etc / inittab não está funcionando no SLES 11

2

Minha tarefa é iniciar um processo na inicialização se ele estiver em execução antes do desligamento. Para conseguir isso, eu adicionei um comando em /etc/init.d/halt.local para salvar o estado do processo em um arquivo.

Em /etc/inittab , adicionei o comando para ler o arquivo e iniciar o processo com base no estado registrado. Mas o processo não está chegando. Eu posso ver que o estado foi gravado corretamente durante o desligamento, e também alguns outros comandos que eu adicionei ao / etc / inittab que estão sendo executados corretamente, mas não o necessário.

Conteúdo adicionado ao inittab:

ec1:235:once:/bin/echo "Started..." > /tmp/pankaj3.txt
rly:235:once:/bin/su - user -c '[[ 'head -1 /tmp/pankaj/.status' == STARTED ]] && { /opt/my_user/bin/ctrl.sh start ; }'

Ao executar o comando no terminal, está funcionando bem. A saída é:

SS-01:~ # /bin/su - user -c '[[ 'head -1 /tmp/pankaj/.status' == STARTED ]] && { /opt/my_user/bin/ctrl.sh start ; }'
[07-10-2015] 10:33:00 ctrl.sh[18008]: Management Process started.

A outra linha adicionada ao inittab ec1:235:once:/bin/echo "Started..." > /tmp/pankaj3.txt é executada.

Por favor me ajude a chegar onde estou errado.

    
por pankaj_ar 07.10.2015 / 12:05

1 resposta

1

Parece que o SUSE Linux ES 11 usa o sistema init tradicional System V (sysvinit). Suse Doc | O processo init

Você pode ver man inittab (5) para documentação da sintaxe.

Em primeiro lugar, pode ser que inittab não suporte recursos de shell, como redirecionamento e comandos compostos, que são suportados apenas no shell. Quando você diz que seu primeiro comando funciona, o que sugere que essa não é a razão.

Em segundo lugar, su corre /bin/sh por predefinição, o que pode não suportar [[ .

Em terceiro lugar, os arquivos em /tmp geralmente são excluídos durante a inicialização, então se você criou /tmp/pankaj/.status durante o desligamento, é quase certo que não esteja lá após a reinicialização. Verifique se esse arquivo está presente.

Em qualquer caso, você deve criar um script init separado que use o shell esperado como a linha #! , coloque-o em /etc/init.d/pankaj (ou qualquer outro) e execute-o nos níveis 2, 3 e 5 com chkconfig .

A seção Scripts de inicialização do Guia de Administração do SUSE fornece algumas dicas para começando com isso.

Por fim, se tudo o que você está tentando fazer é reiniciar o serviço na inicialização, se já estava em execução, não faça isso. chkconfig é a ferramenta padrão para configurar algo para iniciar na inicialização. É o que todos os outros serviços do seu sistema usam. Fazer um serviço agir de forma diferente irá confundir as coisas.

    
por 07.10.2015 / 16:34