Agendamento com Crontab
No GNU/Linux estes recursos são implementados pelo cron, que pode ser utilizado tanto pelo administrador como pelos outros usuários do sistema.
- crontab -e Edita o crontab ou cria um caso ainda não exista;
- crontab -l Mostra o conteúdo do crontab;
- crontab -r Remove o crontab;
- crontab -v Mostra quando foi a última vez que o crontab foi editado (disponível em apenas alguns sistemas).
O cron é estruturado da seguinte forma:
ARQUIVO CRONTAB
O crontab controla as tarefas agendadas por cada usuário. Existe um arquivo para o sistema (/etc/crontab) e um para cada usuário, localizado em /var/spool/cron/<usuário>. Para listar o conteúdo de cada arquivo, digite:
crontab -l
Este comando exibirá o arquivo do usuário que o digitou. Para editar o arquivo, digite:
crontab -e
O crontab respeita esta sintaxe.
- - - - - | | | | | | | | | +----- dia da semana (0 - 6) (domingo=0) | | | +------- mês (1 - 12) | | +--------- dia do mês (1 - 31) | +----------- hora (0 - 23) +------------- minuto (0 - 59)
O usuário root pode acessar o crontab de outros usuários, basta informar o nome do usuário após as opções -r, -l ou -e.
AGENDANDO TAREFAS
00 3,5,4 * * * root /usr/local/sbin/backup.sh - Diariamente, às 03:00h, 05:00h e 07:00h será executado, pelo usuário root, o script backup.sh;
40 16 1 6-8 * /home/oracle/sqldump.sh - Às 16:40 dos dias 01 de junho, julho e agosto, será executado o script sqldump.sh.
A especificação do usuário para executar o script é opcional.
- */5 * * * * php /var/www/cacti/poller.php > /dev/null 2>&1 - Executa, a cada 5 minutos, o arquivo poller.php com usuário php.
Existem ainda 4 diretórios que facilitam o agendamento de tarefas:
Diretório - Período:
- /etc/cron.hourly - De hora em hora;
- /etc/cron.daily - Diariamente;
- /etc/cron.weekly - Semanalmente;
- /etc/cron.monthly - Mensalmente.