[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Loop infinito "invisível"!,
Diego Pasqualin <=