Agenda global /etc/crontab

Continuando a falar sobre o cron… O root, como administrador do sistema, tem a agenda individual dele, que também fica em /var/spool/cron/crontabs/. Além dessa, o root também pode agendar tarefas globalmente; para isso basta editar o arquivo /etc/crontab. Isso quer dizer que, a tarefa que o root registrar nessa agenda, pode ser executada por ele mesmo ou um outro usuário.

A estrutura da agenda global, é a mesma que a da individual… o que difere nela, são os campos: a agenda individual possui 6 campos e a global possui 7 campos. Vejam:

Tabela /etc/crontab

Vejam que de acordo com a tabela acima, o que muda é um campo a mais que apareceu… o campo user! Os valores para definir horários e datas para as tarefas, continuam os mesmos!

Vamos ver um exemplo. O root quer que o usuário nix liste o conteúdo do seu home todos os dias às 15 horas no /tmp no arquivo log_nix.txt, porque esse é o horário que ele vai checar o tmp para ver se o usuário nix está trabalhando ou enrolando.

Mas ele não vai pedir diretamente  para o usuário nix colocar essa tarefa… então, ele vai na agenda global e coloca uma linha assim:

0    15     * * *     nix    ls -ltr /home/nix > /tmp/log_nix.txt

Ou seja, todos os dias, às 15 horas, vai ser gerado no /tmp um arquivo chamado log_nix.txt, com uma listagem do que existe no home do usuário nix; e o root pode saber se a nix realmente está trabalhando ou enrolando😛 !

Bem, um ponto importante… nos exemplos que coloquei nos posts sobre crontab, coloquei os comandos para o cron executar o que eu queria! Como era só um comando, tudo bem… mas se você for executar tarefas que usem mais de um comando, utilize um shell script; pois além de ficar tudo mais organizado, fica mais simples para o cron executar o script do que executar zilhões de comandos😉 !

Outro ponto importante! O que coloquei acima é só um exemplo de como podemos usar o /etc/crontab. Mas vamos aos detalhes… se observarmos o arquivo /etc/crontab, veremos que lá já existem algumas tarefas agendadas. Vejam:

17 *    * * *   root    cd / && run-parts –report /etc/cron.hourly
25 6    * * *   root   cd / && run-parts –report /etc/cron.daily
47 6    * * 7   root   cd / && run-parts –report /etc/cron.weekly
52 6    1 * *   root    cd / && run-parts –report /etc/cron.monthly

O programa run-parts roda scripts ou programas em um diretório. No caso do arquivo /etc/crontab, ele irá rodar os comandos ou scripts que estão dentro dos diretórios /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly.

Isso quer dizer que, esses diretórios estão programados para executar tarefas hora em hora, diariamente, semanalmente ou mensalmente. Vejam a tabela:

Hourly, daily, weekly and monthly

Então, de acordo com a tabela acima, todos scripts  dentro de cada diretório, serão executados no período correspondente. Por exemplo, posso colocar um script que cheque o tamanho das partições diariamente. Para isso, por exemplo, crio um arquivo chamado parts dentro do diretório /etc/cron.daily. Torno o arquivo executável (usando chmod +x /etc/cron.daily/parts), e ele será executado diariamente as 6:25 da manhã.

Bem pessoal… é isso ai! Agora nada de desculpas pra esquecer de fazer o backup ou checar o tamanho do disco… O cron abre mil e uma possibilidades para agendar tarefa… enjoy it… e até o próximo post!!!😀

0 Responses to “Agenda global /etc/crontab”



  1. Deixe um comentário

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




Follow Nix on WordPress.com
junho 2009
S T Q Q S S D
« maio   jul »
1234567
891011121314
15161718192021
22232425262728
2930  

Flickr Photos

Morning Silence

Mais fotos

%d blogueiros gostam disto: