Queremos detectar erros programaticamente em pg_dumps agendados cron.
Além de verificar se o arquivo de log termina ou não em "pg_dump: salvando a definição do banco de dados":
Que outra string indicadora posso grep para verificar programaticamente se um despejo está ok.
O indicador principal é o status de saída do
pg_dump
comando. Se for diferente de zero, algo deu errado, caso contrário, funcionou o tempo todo. Este é o contrato implícito entre qualquer comando e o shell, e violá-lo seria um bug. E também é testável quando o subcomando não pôde ser iniciado.Aqui está um esqueleto básico no shell Unix que testa o código de saída e age de acordo:
É necessário manter as mensagens de erro em armazenamento durável para que possam ser analisadas posteriormente. Quando nenhum erro ocorre, o arquivo de erros deve estar lá, mas vazio, a menos que a
-v
opção seja usada, mas não esteja intencionalmente no script acima.Sobre a mensagem: salvando a definição do banco de dados
Ele é exibido junto com muitas outras mensagens informativas somente ao usar a
-v
opção detalhada ( ). O problema é que em caso de erro, essas mensagens serão misturadas com mensagens de erro, e requer algum nível de conhecimento para distinguir o que é normal do que não é.