Neste artigo, o foco não será estilo receita de bolo, onde instalamos um ambiente com servidores, programas, serviços e tudo mais. Portanto usarei uma linguagem mais solta, sem tantos detalhes.
FAM é uma sigla, que denomina File Alteration Monitor, ou em tradução livre -> Monitor de Alteração de Arquivos. É desenvolvida pela SGI - Silicon Graphics.
Ele observa arquivos e diretórios para você, alertando sob diversas formas para eventos tais como a remoção, alteração e execução.
FAM tem muitas funções para uso: um gerenciador de arquivos poderia usá-lo para controlar o conteúdo do diretório; outro aplicativo poderia lançar um processo em lote, quando chega um arquivo de um host remoto, quando algum arquivo é alterado, e inúmeras possibilidades.
Exemplo de algumas funções do FAM usando sua biblioteca no php.
Funções de FAM:
- fam_cancel_monitor - Finalizando monitoramento
- fam_close - Fecha uma conexão FAM
- fam_monitor_collection - Monitora alterações de uma coleção de arquivos em um diretório
- fam_monitor_directory - Monitora alterações em diretórios
- fam_monitor_file - Monitora alterações em um arquivo
- fam_next_event - Pega o próximo evento FAM pendente
- fam_open - Abre uma conexão para o daemon FAM
- fam_pending - Verifica por eventos FAM pendentes
- fam_resume_monitor - Recomeça um monitoramento suspendido
- fam_suspend_monitor - Suspende monitoramento temporariamente
O FAM é composto por duas partes:
- famd - O nosso daemon, que provê notificações, escuta e requisições. Ele recebe parâmetros do fam.conf, geralmente localizado em /etc/fam.conf
- libfam - Biblioteca de interface com o cliente.
Conteúdo e parâmetros do arquivo de configuração (
/etc/fam.conf):
# untrusted_user = usuário sem autenticação, recebe valores de usuário unix, ou UID
untrusted_user = nobody
#Faz com que o daemon (famd), ignore RPC´s de clientes remotos, desabilitando ele tornará a aceitar
local_only = true
#Faz o daemon verificar o sistema de arquivos do host e do cliente.
xtab_verification = true
#Delay em segundos, para que se possa abrir uma nova requisição e conexão antes de fechar.
#idle_timeout = 5
#nfs_polling_interval = 6
O que é necessário para ter o FAM?
Primeiramente um sistema operacional baseado no
Linux, UNIX, ou POSIX. Neste caso usarei um baseado em Linux.
Lembre-se, o FAM é apenas o início, ele atende requisições de um cliente, que vou demonstrar como exemplo, mas até você mesmo pode criar um cliente, com interface gráfica ou não.
Modo de instalar:
Ubuntu e Debian´s like:
sudo apt-get update (atualiza a lista de repositórios)
sudo apt-get install fam gamin (instala o fam , gamin e suas dependências)
Para instalar usando os fontes, segue abaixo:
Comandos? Primeiramente vamos fazer o download do pacote:
# wget http://oss.sgi.com/projects/fam/download/fam-latest.tar.gz
Após baixar, vamos descompactar, compilar e instalar.
# tar xvfz fam-latest.tar.gz
# cd ./fam-latest
# ./configure
# ./make all && make install
Agora vamos ao cliente. Um cliente de fácil uso e interessante é o "FILESCHANGED", que com pouco tempo e comandos, você faz o básico.
Não vou demonstrar exemplos em C, C++, deixarei isso para frente ou se alguém mais se interessar, por email.