Agendamento de tarefas no Linux (cron e at)

Publicado por Anderson Raimundo Lopes Nascimento em 20/02/2009

[ Hits: 127.768 ]

Blog: http://priscilaanderson.blogspot.com

 


Agendamento de tarefas no Linux (cron e at)



O agendamento de tarefas é um recurso muito interessante para a administração de sistemas operacionais. É possível programar a execução de scripts de manutenção do sistema, disparar envio de newsletters, gerar relatórios de analises de logs, entre outros. Podem ser determinados horários específicos para execução ou estabelecer intervalos regulares.

Cron

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.

AT

O comando "at" pode agendar tarefas de forma semelhante ao cron, e é integrado à interface de linha de comando do Linux. É muito eficiente se aplicado no agendamento de tarefas que sejam disparadas somente uma vez. Uma características deste programa é a execução de aplicativos que tenham passado de seu horário de execução. É muito útil se o computador é desligado com muita frequência ou quando ocorrer alguma interrupção, nesse caso falta de energia.

O at permite o controle dos usuários que podem agendar comandos através dos arquivos /etc/at.allow e /etc/at.deny. Estes arquivos são organizados no formato de um usuário por linha. Durante o agendamento é verificado primeiro o arquivo at.allow (listando que pode executar o comando) e depois at.deny. Caso eles não existam, o agendamento de comando é permitido a todos os usuários.

Agendando tarefas com o at

  • echo ls /var/log | at 10am today - Executa às 10 da manhã de hoje;
  • echo updatedb | at 10:00pm today - Executa às 10 da noite de hoje;
  • echo netstat | at 14:30 tomorrow - executa o comando netstat às 14:30 da tarde;
  • at -f commands.txt teatime - Executa os comandos especificados no arquivos "commands.txt" no horário do chá da tarde (às 16:00 horas);
  • at -f commands.txt +3 minutes - Executa comandos especificados no arquivo "commands.txt" daqui a 3 minutos.

Todas as tarefas agendadas são armazenadas em arquivos dentro do diretório /var/spool/cron/atjobs. Para ver as tarefas, digite:

# atq

Para remover uma tarefa, use comando "atrm" seguido do número da tarefa obtida pelo atq.

Outras dicas deste autor

CIFS - Montando compartilhamento Windows no Linux

Leitura recomendada

Alterando senha do root no Linux através do boot loader

Causando BufferOverflow em servidores rodando o FreeFloat

ISO do Debian testing + non-free (onde baixar)

Soluções alternativas no Kurumin

Instalação do DHCP Server

  

Comentários
[1] Comentário enviado por eldermarco em 20/02/2009 - 17:06h

Boa dica. Eu estava querendo aprender a mexer com esses comandos. Pena que foi uma dica e não um artigo. Teria sido mais interessante se você abordasse de uma maneira um pouco mais completa esses comandos. Mas agradeço mesmo assim :-)

[]'s

Elder Marco.

[2] Comentário enviado por et3rn4l em 08/03/2010 - 00:15h

Anderson, uma pequena correção.

Se os arquivos at.deny e at.allow não existirem, apenas o root podera usá-lo, e não como mencionado, em que todos os usuários poderiam.

Para que todos possam, o at.deny deve existir, mas estar vazio.

No mais parabéns pela dica.

Um abraço.

Adriano

[3] Comentário enviado por alanbatista em 28/05/2012 - 15:14h

Muito bom artigo para o exame 102 da lpi.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts