Eu tenho um teste em execução que falha. Eu preciso descobrir o quão longe chegou antes de bater. Ele será reiniciado novamente após travar e limpar o arquivo de log. Esta limpeza leva 10 minutos embora. Então, se eu estou salvando o arquivo de log a cada 9 minutos, eu deveria ser capaz de obter o arquivo de log.
O problema é que como eu escrevo um script bash para copiar um arquivo de log para um local específico e sobrescrever um arquivo existente (se houver) somente se o arquivo que está sendo copiado for maior que o arquivo no destino. Senão eu quero deixar isso em paz.
25 if [ -f $testFile ]; then
26 COUNT='cat $testFile|wc -l'
27 if [ $COUNT -gt 0 ];then
28 ARGS='head -1 $testFile'
29 echo "Executing test for ARGS"
30 sed -i '1d' $testFile
31 cd /testCode; sleep 600
Neste ponto, o código dorme por 10 minutos, como mencionado
32 /testCode/startTest.sh $ARGS
Isso inicia o teste que remove o arquivo de log. Se o teste não travar, quando o teste for feito, ele irá para o próximo comando. Senão começa de novo do topo
33 'wall "System is going down for reboot in 600 seconds. Please save your work"'
34 sleep 600
35 /sbin/reboot &
36 exit 0
37 fi
38 fi
UPDATE # 1
Eu descobri um jeito. Então, quando o teste começa, eu salvo os logs da execução anterior. Então eu tenho tempo suficiente para verificar os logs enquanto o teste foi reiniciado. O teste geralmente falha depois de uma hora ou mais com segfaults. Isso me dá tempo suficiente para verificar os logs.
Não é uma maneira realmente limpa, mas funcionará. @Lexandre Alves também deu uma boa resposta. Isso pode funcionar também. @Slm deu uma boa resposta, mas infelizmente isso não funcionará em grandes testes como o meu, já que isso vai sobrecarregar o arquivo de log.
Além disso, meu problema é salvar o arquivo de registro, não o registro em si.