Certamente uma das heranças do Unix é o serviço de agendamento de tarefas cron, que ainda permanece em diversas distribuições. Hoje, iremos apresentar uma alternativa para esta ferramenta, o fcron.
Breve histórico
Criado em 2000 por Thibault Godouet, esse daemon tem como objetivo fazer tudo que Vixie Cron e Anacron fazem, oferecendo opções adicionais em relação ao velho conhecido cron.
Recursos
Executar tarefas individualmente, uma por uma:
- Definir um valor máximo de load average para execução da tarefa;
- Estabelecer um valor de nice para executar a tarefa;
- Enviar um e-mail ao usuário para informar que a tarefa não foi executada e explicar por quê;
- Executar o Fcron por meio de scripts;
- Fazer o Fcron sair após executar as tarefas pendentes;
- Executar uma tarefa apenas uma vez entre 0h00 e 05h14;
- Entre outros.
Instalação
RHEL/CentOS/Fedora
# yum install fcron
Debian (Somente disponível na versão squeeze)
# apt-get install fcron
Dissecando
O Fcron possui seu próprio crontab, que está alocado no arquivo /etc/fcron/fcrontab. Oferece a possibilidade de cada usuário possuir seu próprio fcrontab, com as permissões definidas nos arquivos /etc/fcron.allow e /etc/fcron.deny.
Sua sintaxe é semelhante ao crontab do Vixie Cron. Portanto, é possível simplesmente executar o seguinte comando para que o Fcron leia o arquivo /etc/crontab:
# fcrontab /etc/crontab
Importante
bootrun(true|false): Se for true, executa a tarefa caso o servidor sistema estava desligado.
lavg(0.1,0.5,0.4): Somente executa a tarefa se os valores de load average do sistema forem iguais ou menores que 0.1 para o último minuto, 0.5 nos últimos 5 minutos e 0.4 nos últimos 15 minutos. As três condições precisam ser satisfeitas (a menos que se use a opção lavgor(true) junto com essa opção).
lavg(0.1,0.5,0.4),until(1h): Semelhante à linha anterior, porém aguarda durante 1 hora a redução do load average. Após esse período, executa a tarefa sem consultar o load average.
runas(ciclanodetal): Executa a tarefa como usuário ciclano de tal. Interessante essa opção em vez de especificar o usuário com a sintaxe do Vixie Cron.
Exemplos:
15 16 * * * /scripts/backup.samba.sh
Executa o comando /scripts/backup.samba.sh às 16:15 todos os dias.
@ 3h /scripts/backup.ldap.sh
A cada 3 horas será executado o script acima.
@runas(ludolfs) 10m /scripts/limpa-temp.sh
O comando acima será executado a cada 10 minutos.
@ 16h19 /scripts/teste.sh
Esse comando será executado a cada 16 horas e 19 minutos.
O fcron pode ser usado de diversas maneiras. Consulte a página do projeto para maiores detalhes.



