shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Loop infinito "invisível"!


From: Diego Pasqualin
Subject: Loop infinito "invisível"!
Date: Wed, 25 Apr 2007 13:10:22 -0000
User-agent: eGroups-EW/0.82

Bom dia, estou criando um script para verificar existência de HD em
uma máquina com bootremoto. Caso o HD exista, verifica se ele se
encontra nos padrões (uma única partição, no formato XFS), se
negativo, refaz a tabela de partições, se o hd está no padrão, roda um
xfs_repair.

Simples, não fosse o inconveniente de, no "else", da cadeira de "if's"
que verificam o padrão, o script entrasse em um loop (!?). Detalhe que
no script inteiro não existe nenhum loop, o que retira a possibilidade
de erro de sintaxe, além do mais, o fato acontece somente no else,
caso um dos ifs acima seja executado, o programa segue normalmente.

Quem chama esse meu script shell é um scrip expect, comando exec
/sbin/verifica_tipo3, já tentei usar exec bash -c
"/sbin/verifica_tipo3" tb, sem sucesso.

Reparei que se eu comentar o comando xfs_repair, o script não entra em
loop! Porém, apesar de parecer óbvio, é estranho acreditar que ele
seja o problema, já que, se executado "no braço", fora do script,
também funciona normalmente.

Ai vai parte do código:

###------------------------code-------------------------###
-----------------------------------------------------------

# Se existir mais que duas particoes, ou nao existir particoes.
if [ ${TESTE} -eq 0 ]; then
        # Terminal nao e tipo 3
        exit 0;

elif [ ${TESTE} -gt 2 -o ${TESTE} -eq 1 ]; then
        MSG="Um HD foi encontrado, porém não se encontra no padrão
Paraná Digital. 
Criando partição e formatando HD, esta operação pode demorar alguns
minutos..."
        mensagem "${MSG}"
        
        cria_particao
        formata_particao

# fstyp retorna o nome do sistema de arquivos, se for diferente de
Xfs, formata particao
elif [[ $(fstyp "${HD}1") != "xfs" ]]; then
        MSG="Um HD foi encontrado, porém nao se encontra no padrão
Paraná Digital. 
Formatando HD, esta operação pode demorar alguns minutos..."
        mensagem "${MSG}"
        formata_particao

# Se existir apenas uma particao e ela for xfs, faz um teste de
integridade
else
        MSG="Verificando integridade do HD.
Esta operação pode demorar alguns minutos..."
#       mensagem "${MSG}"

        if mount | grep -q ${HD}1; then
                umount ${HD}1
        fi
#       xfs_repair ${HD}1
        mount ${HD}1 /media/hd
fi

###------------------------code-------------------------###
-----------------------------------------------------------

Como mencionado, o programa apresenta comportamento inesperado somente
no else. Já tentei colocar exit 0 depois do repair. Já verifiquei que
o repair é executado corretamente, retorna 0, reparei também, que a
cada loop, a instância ($$) é diferente.

Alguma sugestão?
Obrigado, e desculpem o e-mail longo.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]