Android

Agendando Tarefas Cron com Crontab

CRONTAB - AGENDAR TAREFAS NO LINUX!

CRONTAB - AGENDAR TAREFAS NO LINUX!

Índice:

Anonim

Cron é um daemon de agendamento que executa tarefas em intervalos especificados. Essas tarefas são chamadas de tarefas cron e são usadas principalmente para automatizar a manutenção ou administração do sistema.

Por exemplo, você pode definir um trabalho cron para automatizar tarefas repetitivas, como fazer backup de bancos de dados ou dados, atualizar o sistema com os patches de segurança mais recentes, verificar o uso do espaço em disco, enviar e-mails etc. Alguns aplicativos, como Drupal ou Magento, exigem tarefas cron para executar determinadas tarefas.

Os trabalhos cron podem ser agendados para serem executados por um minuto, hora, dia do mês, mês, dia da semana ou qualquer combinação destes.

O que é o arquivo Crontab

Crontab (tabela cron) é um arquivo de texto que especifica o agendamento de tarefas cron. Existem dois tipos de arquivos crontab. Os arquivos crontab em todo o sistema e os arquivos crontab de usuários individuais.

Os arquivos crontab dos usuários são armazenados pelo nome do usuário e sua localização varia de acordo com os sistemas operacionais. No sistema baseado no Red Hat, como o CentOS, os arquivos crontab são armazenados no diretório /var/spool/cron , enquanto os arquivos Debian e Ubuntu são armazenados no diretório /var/spool/cron/crontabs .

Embora você possa editar os arquivos crontab do usuário manualmente, é recomendável usar o comando crontab .

/etc/crontab e os arquivos dentro do diretório /etc/cron.d são arquivos crontab em todo o sistema que podem ser editados apenas pelos administradores do sistema.

Na maioria das distribuições Linux, você também pode colocar scripts nos diretórios /etc/cron.{hourly, daily, weekly, monthly} e os scripts serão executados a cada hour/day/week/month .

Sintaxe e operadores do Crontab

Cada linha no arquivo crontab do usuário contém seis campos separados por um espaço seguido pelo comando a ser executado.

* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)

Os cinco primeiros campos podem conter um ou mais valores, separados por vírgula ou um intervalo de valores separados por um hífen.

  • * -O operador asterisco significa qualquer valor ou sempre. Se você tiver o símbolo de asterisco no campo Hora, significa que a tarefa será executada a cada hora. , -O operador de vírgula permite especificar uma lista de valores para repetição. Por exemplo, se você tiver 1, 3, 5 no campo Hora, a tarefa será executada às 1h, 3h e 5h. - -O operador hífen permite especificar um intervalo de valores. Se você tiver de 1-5 a 1-5 no campo Dia da semana, a tarefa será executada todos os dias da semana (de segunda a sexta-feira). / -O operador de barra permite especificar valores que serão repetidos durante um certo intervalo entre eles. Por exemplo, se você tiver */4 no campo Hora, significa que a ação será executada a cada quatro horas. É o mesmo que especificar 0, 4, 8, 12, 16, 20 . Em vez de asterisco antes do operador de barra, você também pode usar um intervalo de valores, 1-30/10 significa o mesmo que 1, 11, 21 .

Arquivos Crontab em todo o sistema

A sintaxe dos arquivos crontab em todo o sistema é um pouco diferente das crontabs do usuário. Ele contém um campo de usuário obrigatório adicional que especifica qual usuário executará o trabalho cron.

* * * * * command(s) * * * * * command(s)

Macros predefinidas

Existem várias macros especiais de programação Cron usadas para especificar intervalos comuns. Você pode usar esses atalhos no lugar da especificação de data de cinco colunas.

  • @yearly (ou @annually ) - Execute a tarefa especificada uma vez por ano à meia-noite (00:00) de 1º de janeiro. Equivalente a 0 0 1 1 * . @monthly - Execute a tarefa especificada uma vez por mês à meia-noite no primeiro dia do mês. Equivalente a 0 0 1 * * . @weekly - Execute a tarefa especificada uma vez por semana à meia-noite de domingo. Equivalente a 0 0 * * 0 . @daily - Execute a tarefa especificada uma vez por dia à meia-noite. Equivalente a 0 0 * * * . @hourly - Execute a tarefa especificada uma vez por hora no início da hora. Equivalente a 0 * * * * . @reboot - Execute a tarefa especificada na inicialização do sistema (tempo de inicialização).

Comando Linux Crontab

O comando crontab permite instalar ou abrir um arquivo crontab para edição.

Você pode usar o comando crontab para visualizar, adicionar, remover ou modificar tarefas cron usando as seguintes opções:

  • crontab -e - Edite o arquivo crontab ou crie um, se ele ainda não existir. crontab -l - Exibe o conteúdo do arquivo crontab. crontab -r - Remove seu arquivo atual do crontab. crontab -i - Remova o arquivo atual do crontab com um aviso antes da remoção. crontab -u - Edite outro arquivo crontab de uso. Requer privilégios de administrador do sistema.

O comando crontab abre o arquivo crontab usando o editor especificado pelas variáveis ​​de ambiente VISUAL ou EDITOR .

Variáveis ​​Crontab

O daemon cron define automaticamente várias variáveis ​​de ambiente.

  • O caminho padrão é definido como PATH=/usr/bin:/bin . Se o comando que você está chamando estiver presente no caminho especificado no cron, você poderá usar o caminho absoluto para o comando ou alterar a variável cron $PATH . Você não pode anexar implicitamente :$PATH como faria com um script comum. O shell padrão é definido como /bin/sh . Você pode definir um shell diferente alterando a variável SHELL chama o comando do diretório inicial do usuário. A variável HOME pode ser substituída pelas configurações no crontab. A notificação por email é enviada ao proprietário do crontab. Para substituir o comportamento padrão, você pode usar a variável de ambiente MAILTO com uma lista (separada por vírgula) de todos os endereços de email que deseja receber as notificações por email. Se MAILTO estiver definido, mas vazio ( MAILTO="" ), nenhum email será enviado.

Restrições ao Crontab

Os administradores de sistema podem controlar quais usuários têm acesso ao comando crontab usando os arquivos /etc/cron.allow e /etc/cron.allow . Os arquivos consistem em uma lista de nomes de usuários, um nome de usuário por linha.

Por padrão, apenas o arquivo /etc/cron.deny existe e está vazio, o que significa que todos os usuários podem usar o comando crontab. Se você deseja negar o acesso aos comandos crontab a um usuário específico, adicione o nome de usuário a este arquivo.

Se o arquivo /etc/cron.allow existir, apenas os usuários listados neste arquivo poderão usar o comando crontab .

Se nenhum arquivo existir, apenas os usuários com privilégios administrativos poderão usar o comando crontab .

Exemplos de empregos Cron

Abaixo estão alguns exemplos de tarefas cron que mostrarão como agendar uma tarefa para ser executada em diferentes períodos de tempo.

  • Execute um comando às 15:00 todos os dias de segunda a sexta-feira:

    0 15 * * 1-5 command

    Execute um script a cada 5 minutos e redirecione a saída padrão para dev null , apenas o erro padrão será enviado para o endereço de email especificado:

    [email protected] */5 * * * * /path/to/script.sh > /dev/null

    Execute dois comandos toda segunda-feira às 15h (use o operador && entre os comandos):

    0 15 * * Mon command1 && command2

    Execute um script PHP a cada 2 minutos e grave a saída em um arquivo:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log

    Execute um script todos os dias, a cada hora, das 8h às 16h:

    00 08-16 * * * /path/to/script.sh

    Execute um script na primeira segunda-feira de cada mês, às 7h.

    0 7 1-7 * 1 /path/to/script.sh

    Execute o script a às 21h15, nos dias 1 e 15 de cada mês:

    15 9 1, 15 * * /path/to/script.sh

    Defina as variáveis HOME , PATH , SHELL e MAILTO e execute um comando a cada minuto.

    HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command

Conclusão

Você aprendeu a criar trabalhos cron e agendar tarefas em uma data e hora específicas.

Sinta-se livre para deixar um comentário se tiver alguma dúvida.

cron crontab terminal