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

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

Re: [shell-script] Loop infinito "invisível"!


From: mop
Subject: Re: [shell-script] Loop infinito "invisível"!
Date: Wed, 25 Apr 2007 21:09:31 -0300

Talvez já tenha feito isso, caso não, experimente pois pode te dar
alguma pista.
Insira um
set -x
em algum ponto do script para o shell escrever em stderr cada passo que
fará.
Se o volume de informações ficar muito alto na tela pode ser melhor enviar
para arquivo com um
exec 2> /tmp/teste

Pode acompanhar on the fly com 
tail -f /tmp/teste
em outro terminal ou examinar posteriormente, ou na hora, o arquivo com um
editor. No segundo caso não esqueça que ele já pode ter aumentado desde
que o carregou para o exame atual.

Também parece interessante que o script reporte quando inicia e quando
termina, com um echo "alguma coisa" >&2. Isso pode ajudar a determinar
se há realmente um loop e se ele é interno ou não.

Boa caça!

------------------------------------------------------------------
>From: "Diego Pasqualin" <address@hidden>
>Date: Wed, 25 Apr 2007 13:10:22 -0000
>
>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]