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!!! 😀

Anúncios