Estas tarefas são programadas para todo dia, toda semana ou todo mês, serem automaticamente executadas através do crontab e um script shell comum. A configuração do cron geralmente é chamada de crontab.
Os sistemas Linux possuem o cron sempre presente. Pelo menos eu nunca vi nenhuma distribuição que não incluísse o tão útil cron. A configuração tem duas partes: Uma global, e uma por usuário. Na global, que é o root quem controla, o crontab pode ser configurado para executar qualquer tarefa de qualquer lugar, como qualquer usuário. Já na parte por usuário, cada usuário tem seu próprio crontab, sendo restringido àpenas ao que o usuário pode fazer (e não tudo, como é o caso do root).
Para configurar um crontab por usuário, utiliza-se o comando "crontab", junto com um parâmetro, dependendo do que você quiser fazer. Abaixo uma relação:
Comando | Função |
crontab -e | Edita o crontab atual do usuário |
crontab -l | Exibe o atual conteúdo do crontab do usuário |
crontab -r | Remove o crontab do usuário |
Se você quiser verificar os arquivos crontab dos usuários, você precisará ser root. O comando crontab coloca os arquivos dos usuários no diretório:
/var/spool/cron/usuario |
Onde "usuario" corresponde ao usuário 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 configuração, vamos estudar o formato da linha do crontab, que é quem vai dizer o que executar e quando. Vamos ver um exemplo:
0 4 * * * who |
Então como se pode ver, a linha é dividida em 6 campos separados por tabs ou espaço:
Campo | Função |
1o. | Minuto |
2o. | Hora |
3o. | Dia do mês |
4o. | Mês |
5o. | Dia da semana |
6o. | Programa pra execução |
Todos estes campos, sem contar com o 6o., são especificados por números. Veja a tabela abaixo para os valores destes campos:
Campo | Função |
Minuto | 0-59 |
Hora | 0-23 |
Dia do mês | 1-31 |
Mês | 1-12 |
Dia da semana | 0-6 (o "0" é domingo, "1" segunda, etc) |
Então o que nosso primeiro exemplo estava dizendo? A linha está dizendo: "Execute o comando 'who' todo dia de todo mês sendo o dia qualquer dia da semana, às 4 horas e 0 minutos.". 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 minutos 1, 21 e 41".
30 4 * * 1 rm -rf /tmp/* |
Aqui está dizendo: "Apagar todo conteúdo do diretório /tmp toda segunda-feira, as 4:30 da 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 inúmeros jeitos de agendamento possível. No arquivo do crontab global, o sexto campo pode ser substituído pelo nome do usuário, e um sétimo campo adicionado com o programa para a execução, como mostro no exemplo a seguir:
0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg |
Aqui está dizendo: "Executar o mrtg como usuário root, durante 5 e 5 minutos dos minutos 0-59. Ou seja, executar de 5 em 5 minutos o mrtg sempre.".
Em alguma distribuições, os agendamentos mais comuns estão programados para serem executados. Veja as linhas abaixo:
01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly |
O programa "run-parts" executa todos os scripts executáveis dentro de um certo diretório. Então com essas linhas, temos diretórios programados para executar programas de hora em hora, diariamente, semanalmente ou mensalmente. Abaixo a tabela:
Diretório | Período |
/etc/cron.hourly | De hora em hora |
/etc/cron.daily | Diariamente |
/etc/cron.weekly | Semanalmente |
/etc/cron.monthly | Mensalmente |
Então todos os arquivos executáveis dentro de cada diretório serão executados no seu correspondente período. Ou seja, posso colocar um certo conteúdo no arquivo "/etc/cron.daily/teste", depois torná-lo executável através do comando "chmod +x /etc/cron.daily/teste", e então ele será executado todo dia as 4:02 da manhã.
Bem é isso! Agora você já pode programar suas tarefas para serem automaticamente executadas e te poupar muito trabalho manual :)
0 comentários:
Postar um comentário