Você está na página 1de 2

Como utilizar o cron e os arquivos crontab para automatizar as tarefas do Linux, agendando qualquer tipo de coisa.

timo para quem quer poupar tempo e trabalho! Por Hugo Cisneiros O cron um programa de agendamento de tarefas. Com ele voc pode programar para ser exe cutado qualquer coisa numa certa periodicidade ou at mesmo em um exato dia, numa exata hora. Um uso bem comum do cron o agendamento de tarefas administrativas de manuteno do seu sistema, como por exemplo, procura por links simblicos quebrados, anlise de segurana do sistema, backup, entre outros. Estas tarefas so programadas p ara todo dia, toda semana ou todo ms, serem automaticamente executadas atravs do c rontab e um script shell comum. A configurao do cron geralmente chamada de crontab . Os sistemas Linux possuem o cron sempre presente. Pelo menos eu nunca vi nenhuma distribuio que no inclusse o to til cron. A configurao tem duas partes: Uma global, ma por usurio. Na global, que o root quem controla, o crontab pode ser configurad o para executar qualquer tarefa de qualquer lugar, como qualquer usurio. J na part e por usurio, cada usurio tem seu prprio crontab, sendo restringido penas ao que o u surio pode fazer (e no tudo, como o caso do root). Para configurar um crontab por usurio, utiliza-se o comando crontab, junto com um p armetro, dependendo do que voc quiser fazer. Abaixo uma relao: Comando Funo crontab -e Edita o crontab atual do usurio crontab -l Exibe o atual contedo do crontab do usurio crontab -r Remove o crontab do usurio Se voc quiser verificar os arquivos crontab dos usurios, voc precisar ser root. O co mando crontab coloca os arquivos dos usurios no diretrio: /var/spool/cron/usuario Onde usuario corresponde ao usurio dono do arquivo crontab. Agora se voc quiser editar o crontab global, este fica no arquivo /etc/crontab, e s pode ser manipulado pelo root. E agora que j sabemos onde ficam os arquivos de co nfigurao, vamos estudar o formato da linha do crontab, que quem vai dizer o que ex ecutar e quando. Vamos ver um exemplo: 0 4 * * * who

Ento como se pode ver, a linha dividida em 6 campos separados por tabs ou espao: Campo Funo 1o. Minuto 2o. Hora 3o. Dia do ms 4o. Ms 5o. Dia da semana 6o. Programa para execuo Todos estes campos, sem contar com o 6o., so especificados por nmeros. Veja a tabe la abaixo para os valores destes campos: Campo Valores Minuto 0-59 Hora 0-23 Dia do ms 1-31 Ms 1-12 Dia da semana 0-6 (o 0 domingo), 1 segunda, etc.

Ento o que nosso primeiro exemplo estava dizendo? A linha est dizendo: Execute o co mando who todo dia de todo ms sendo o dia qualquer dia da semana, s 4 horas e 0 minu tos.. Vamos pegar mais exemplos para analisar: 1,21,41 * * * * echo "Meu crontab rodou mesmo!"

Aqui est dizendo: Executar o comando do sexto campo toda hora, todo dia, nos minut os 1, 21 e 41. 30 4 * * 1 rm -rf /tmp/*

Aqui est dizendo: Apagar todo contedo do diretrio /tmp toda segunda-feira, as 4:30 d a manh.. 45 19 1,15 * * /usr/local/bin/backup

Aqui est dizendo: Executar o comando backup todo dia 1 e 15 s 19:45.. E assim voc pode ir montando inmeros jeitos de agendamento possvel. No arquivo do c rontab global, o sexto campo pode ser substitudo pelo nome do usurio, e um stimo ca mpo adicionado com o programa para a execuo, como mostro no exemplo a seguir: 0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg Aqui est dizendo: Executar o mrtg como usurio root, durante 5 e 5 minutos dos minut os 0-59. Ou seja, executar de 5 em 5 minutos o mrtg sempre.. Em alguma distribuies, os agendamentos mais comuns esto programados para serem exec utados. Veja as linhas abaixo: 01 02 22 42 * 4 4 4 * * * 1 * * * * * * 0 * root root root root run-parts run-parts run-parts run-parts /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly

O programa run-parts executa todos os scripts executveis dentro de um certo diretrio . Ento com essas linhas, temos diretrios programados para executar programas de ho ra em hora, diariamente, semanalmente ou mensalmente. Abaixo a tabela: Diretrio Perodo /etc/cron.hourly De hora em hora /etc/cron.daily Diariamente /etc/cron.weekly Semanalmente /etc/cron.monthly Mensalmente Ento todos respondente ily/teste, e ento ele os arquivos executveis dentro de cada diretrio sero executados no seu cor perodo. Ou seja, posso colocar um certo contedo no arquivo /etc/cron.da depois torn-lo executvel atravs do comando chmod +x /etc/cron.daily/teste, ser executado todo dia as 4:02 da manh.

Bem isso! Agora voc j pode programar suas tarefas para serem automaticamente execu tadas e te poupar muito trabalho manual :)

Você também pode gostar