Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Espionando HL2
Por v3r9a
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Agendamento de tarefas no Linux (cron e at)
Linux user
Publicado por Anderson Raimundo Lopes Nascimento em 20/02/2009

Login: arln, 37884 pontos | Blog: http://priscilaanderson.blogspot.com
[ Hits: 10932 ]

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

Leitura recomendada
   Dica Linux recomendada Usando repositório Yum para o Webmin e uso seguro desta ferramenta de gerência
   Dica Linux recomendada Instalando XMMS no Ubuntu 9.04
   Dica Linux recomendada Instalando JDK e Jboss no Fedora Core 6
   Dica Linux recomendada Conexão PHP + Oracle 10g
   Dica Linux recomendada Comando find - Expressões pouco conhecidas

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


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.