Quantos dias tem no mês?

nmon_interactive

E então, quantos dias tem no mês? E como é que explicamos para o computador como saber exatamente quantos dias terá um mês específico? E para que motivo eu precisaria desta informação? Tudo por causa de uma ferramenta para monitoração chamada nmon (de Nigel’s Monitor), que foi/é desenvolvida por Nigel Griffiths originalmente para o AIX (o UNIX da IBM) e posteriormente portada para Linux nas seguintes plataformas: POWER, Intel x86 (32-bit e 64-bit), S390 (31-bit e 64-bit) e ARM (Raspberry Pi & cia).

Ela é bem fácil de instalar — está empacotada nas principais distribuições — e de usar, aliás tem duas formas de operação. A primeira é o modo interativo, funcionando nos mesmos moldes do top ou do htop. A outra forma é como coletor de dados  ou seja, executado em segundo plano por um tempo determinado e registrando as informações em um arquivo.

Para análise destes dados existem duas ferramentas desenvolvidas uma que transforma tudo em uma planilha do Excel (Boooo!) e outra que converte (via RRDTool) para HTML. Mas o assunto aqui, por incrível que pareça, não é o bem o nmon (depois falarei dele, prometo!) e tem relação direta com o fato de precisar saber quantos dias tem no mês.

Acontece que no modo de coleta de dados, para colocá-lo no “automático” você precisa fazer uma conta bem simples considerando o número de dados coletados, o intervalo entre elas e o período de tempo em que se irá coletar. Não dá pra dizer a ele: “monitore por 24h”, “execute por 5 dias” etc. O que em si não é problema algum até que você resolve que seria uma boa ideia produzir uma coleta mensal (começando em 00:00 do dia 1º e se encerrando as 23h59 do último dia) e, claro, deixando isso automatizado no cron (automatizar sempre, para isto que inventamos os computadores)!

Mas… …como faz?

Coloca-se doze entradas no crontab?

Ah não, somente três! Mas e quando virar o ano?

Pelo jeito é fazer algo que saiba quantos dias terão no mês, fazer as contas corretas e lançar o programa. E eu até achava que seria algo simples, até descobrir que não existia um comando que me dizia a quantidade de dias no mês, procurei mais uma vez e no final fiz isto aqui:

Do jeito que está é uma função em Bash para ser arrancada, incluída em outro script ou mesmo deixada assim como um comando independente, talvez com outro nome… sei lá, que tal nod?!?! Este código está disponível no GitHub e para testá-lo, rode:

$ for ((I=1; I<13; I++)); do echo $I "=> $( ./numberofdays.sh $I)" ; done
1 => 31
2 => 28
3 => 31
4 => 30
5 => 31
6 => 30
7 => 31
8 => 31
9 => 30
10 => 31
11 => 30
12 => 31

Aliás, se existir um jeito mais fácil de se saber quantos dias tem no mês, me avise! Só não vale dizer que é contando os ossinhos da mão.

Anúncios

2 comentários sobre “Quantos dias tem no mês?

  1. Pingback: Dois Anos! | giovannireisnunes

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s