GearBest

sexta-feira, 25 de dezembro de 2015

Automação Linux com Agendamento de Tarefas no Corn

Agendar Tarefo Cron Linux

Cron é um daemon usado no Linux e em várias versões do Unix que executa tarefas agendadas no arquivo "/etc/crontab". Esta é uma ferramenta bastante poderosa, que pode ser usada para automatizar tarefas de rotina e de manutenção do sistema.

crontab – manter arquivos de crontab para usuários individuais. Cada usuário tem seu próprio arquivo crontab, localizado em /var/spool/cron/crontabs.
• -l : lista as tarefas agendadas para o usuário
• -e : edita o agendador
• -r : apaga o arquivo do usuário


/etc/crontab – arquivo de configuração do cron para o sistema e para o root, segue a sintaxe informada abaixo.

• Quando um dos atributos é informado como sendo * (asterisco) assume-se a condição para todos os valores possíveis. Por exemplo, se colocamos * no mês, executa-se o comando dado em todos os meses do ano.

• Deve-se informar o SHELL utilizado e o PATH
• SHELL = /bin/bash
• PATH = /sbin:/bin:/usr/sbin:/usr/bin
• MAILTO = root
• HOME = /

.---------------- minuto (0 - 59)
| .------------- hora (0 - 23)
| | .---------- dia do mês (1 - 31)
| | | .------- mês (1 - 12)
| | | | .---- dia da semana (0 - 6) (Domingo=0)
| | | | |
* * * * * comando a ser executado

Exemplo – todos os dias, às 8 da manhã, executar o comando updatedb * 08 * * * updatedb.

Dentro do diretório /etc, existem quatro diretórios de agendamentos pré-definidos. Para utilizá-los, basta copiar o script para dentro de um desses diretórios:
• /etc/cron.hourly/ : de hora em hora
• /etc/cron.daily/ : de dia em dia
• /etc/cron.weekly/ : de semana em semana
• /etc/cron.montly/ : de mês em mês

Após copiar o script para o diretório desejado, é necessário reiniciar o daemon do cron, para que as alterações entrem em vigor.
• /etc/init.d/crond restart

at – Enfileirar, examinar ou deletar trabalhos para execuções posteriores. Aceita horários no formato HH:mm para executar uma tarefa em uma hora específica do dia (se o horário já houver passado, o próximo dia é assumido). Pode-se usar os sufixos AM ou PM para executar no período matutino ou vespertino.

• -l : um alias para atq. Lista os trabalhos enfileirados.
• -d : um alias para atrm. Deleta um trabalho enfileirado.
• -f arquivo : lê os comandos de um arquivo.
• Tarefas agendadas ficam guardadas no diretório /var/spool/cron/atjobs.
• Também pode-se especificar qual dia a tarefa será executada nos formatos MMDDAA ou
MM/DD/YY ou DD.MM.YY
• A especificação da data deve vir após a especificação da hora. Por exemplo, pode-se utilizar at 4pm +3 days.
• Pode-se especificar horários tais como now + número unidade. As unidades podem ser
minutes, hours, days ou weeks. at now + 12 hours.

O superusuário pode usar esses comandos em qualquer caso. Para outros usuários, permissão de uso deve estar determinada nos arquivos /etc/at.allow e /etc/at.deny.
• Um arquivo /etc/at.deny vazio significa que qualquer usuário pode utilizar esses comandos. Essa é a configuração padrão.

anacron – Usado para executar comandos periodicamente, com uma frequência especificada em dias. Diferente do cron, não assume que a máquina rode continuamente.
• Quando executado, anacron lê uma lista de tarefas de um arquivo de configuração,
normalmente /etc/anacrontab. Esse arquivo contém uma lista das tarefas que o anacron
controla.
/var/spool/anacron – Diretório usado para armazenar as etiquetas de tempo dos arquivos.
-u : apenas atualizar a etiqueta de tempo dos trabalhos, para a hora corrente, mas não
executar nenhum.
-s : serializar a execução das tarefas. Uma só roda após a conclusão da outra.
-n : executar todos as tarefas agora.

/etc/anacrontab – Arquivo de configuração para o anacron. As descrições de tarefas seguem a forma:
período delay identificadordatarefa comando @nome_do_período delay identificadordatarefa comando.

Exemplo de uso:

# todo dia (1), após 5 minutos (5) depois de ligado.
1 5 falador echo “Olá eu sou o falador”.

• O período é especificado em dias, o delay em minutos.

Conteúdo Relacionado: Configurar e Manter a Hora do Sistema no Linux com NTP.