Estou tentando descobrir isso. Cenário é este:
Um daemon de tcp com encadeamento com um backend de sqlite armazena informações em um arquivo sqlite2 exclusivo por ID de IMEI, em um subdiretório exclusivo por dia ( pseudo: 2012/11/01/event_$imei.sqlite
). Cerca de 3000 deles por dia. Como você sabe, há uma fase em que um arquivo de diário sqlite está sendo criado e excluído ao receber e armazenar dados de entrada.
Este aplicativo só grava no diretório de hoje ou de ontem, os (pequenos) datafeeds podem levar até 255 segundos. Portanto, há uma fase às 00:00 UTC. Durante uma conexão, várias gravações podem ocorrer, o link da rede permanece aberto e os recursos podem enviar rajadas adicionais de novos dados enquanto a conexão é aberta. Nenhum bloqueio explícito está acontecendo, o sqlite manipula a si mesmo, uma conexão é simplesmente única por imei, então nunca há 2 threads gravando no mesmo arquivo. Com outras palavras, o daemon de controle não tem a menor idéia do que o sqlite faz nem se importa.
Eu quero contar o número de arquivos de diário sqlite já criados como um total de 2 em um determinado ponto no tempo, é claro. Essencialmente eles são quase os mesmos, mas nunca são os mesmos, eles vivem apenas por um curto período de tempo. Os sistemas de monitoramento geralmente contam o número de arquivos presentes como um instantâneo no tempo. Esse não é o tipo de métrica que estou procurando.
Então, como você pode fazer exatamente esse tipo de contagem com a menor pegada na carga? Deve haver um truque, é * nix depois de tudo. O sistema aqui é um servidor Ubuntu, mas eu prefiro um pouco - mas não limitado a uma solução geral. Mas tenha em mente que novos diretórios serão criados com o passar do tempo e eu devo ser capaz de segui-lo, e eu quero que ele seja volátil (então uma reinicialização pode (deve) redefinir isso).
Agradecemos desde já por me dar bootstrapping em qualquer direção.