Gentoo Archives: gentoo-user-br

From: Daniel da Veiga <danieldaveiga@×××××.com>
To: gentoo-user-br@l.g.o
Subject: Re: [gentoo-user-br] análise de máquina
Date: Fri, 24 Oct 2008 03:35:46
Message-Id: 342e1090810232035l2e6c8515q2c6b90cebc19ef49@mail.gmail.com
In Reply to: Re: [gentoo-user-br] análise de máquina by Fabiano - deStilaDo
1 2008/10/24 Fabiano - deStilaDo <fabianoengler@×××××.com>:
2 > Para arquivos temporários, por exemplo quando for apenas pra jogar uma
3 > saída para ser processada por algum comando e depois o arquivo
4 > apagado, eu gosto de usar o comando tempfile. (man tempfile).
5 >
6 > No teu caso não tem muita necessidade, mas se acontecesse por exemplo
7 > de o seu script rodar mais de uma vez em paralelo, vc pode ter
8 > problemas. Em scripts com comandos que podem demorar (rsync por
9 > exemplo) o risco aumenta bastante, aí o tempfile vem a calhar.
10 >
11 > Um exemplo muito comum de uso dele:
12 >
13 > arqlog=$( tempfile 2>/dev/null ) || arqlog=/tmp/test$$
14 > trap "rm -f $tempfile" 0 1 2 5 15
15 >
16 > Nesse caso, ainda temos o comando trap que garante que o arquivo vai
17 > ser apagado, mesmo que vc pressione um ctrl+c no script. Ao trabalhar
18 > com dados um pouco mais sensíveis, isso é importante.
19 >
20 > Outra dica, que parece não ser muito útil nesse seu script mas acho
21 > pertinente comentar pois poucas pessoas conhecem, é verificar a saida
22 > de erro de comandos de um pipe. O problema do pipe é que o erro
23 > retornado (ou exit status) é o do último comando.
24 >
25 > Em muitos scripts meu, o último comando do pipe é um tee para salvar a
26 > saída, e se algum programa importante do pipe falha, eu faço o
27 > seguinte para testar:
28 >
29 > rsync /mnt/winsrv/ $bkdir 2>&1 1>/dev/null | tee $saida_rsync
30 > e=${PIPESTATUS[0]}
31 > log Return code from rsync: $e
32 > if [[ $e != 0 ]]
33 > then
34 > log rsync failed
35 > echo "Erro: $e (valor de retorno do rsync)
36 > Rsync do script de backup em $servidor falhou.
37 > O valor de retorno do rsync foi: $e
38 > Saída do rsync:
39 > " | tee $temp_file
40 > cat $temp_file $saida_rsync | mail -s "Falha no backup do
41 > Servidor $servidor" fabianoengler@×××××.com
42 > fi
43 >
44
45 E é por isso que eu adoro essa lista.
46 Valeu cara, ótimas dicas! Estou trabalhando em um script de rsync para
47 o cron, para backup de uma partição, e isso vai ajudar.
48
49 --
50 Daniel da Veiga