Crontab - Se você possui um site com servidor pesado no momento, pode estar executando certos processos, como enriquecer dados ou gerar miniaturas em segundo plano, sem interferir na interface do usuário. Bem, o Linux crontab tem um bom programa que faz exatamente isso: Cron.

Uma Introdução ao Cron

Então, o que é esse programa? Cron é classificado como um daemon que pode executar comandos agendados. Ele é iniciado automaticamente ao inserir níveis de execução multiusuário, em /etc/init.d. Ele pesquisa na área de spool em / var / spool / cron / crontabs por arquivos crontab nomeados após as contas em / etc / passwd. Para acessar os crontabs nesse diretório, você precisa usar o comando crontab em vez de acessá-los diretamente. O Cron também pode ler o formato ligeiramente diferente de / etc / crontab, bem como os arquivos em /etc/cron.d.

Uma vez configurado, o Cron acorda a cada minuto, examina o linux crontabs armazenado e verifica o comando para ver se há algo a ser executado. Se um comando for executado e a saída for gerada, a saída será enviada ao proprietário do crontab ou ao usuário na variável MAILTO no crontab. As cópias filho do cron que executa esses processos são nomeadas em maiúsculas, que você verá na saída ps e syslog.

O Cron também verifica a cada minuto se há alterações no horário modificado do diretório de spool. Se houver alterações, ele examinará o tempo de modificação de todos os crontabs do linux e recarregará os que foram alterados. Como resultado, o cron não precisa reiniciar quando um arquivo crontab é alterado.

Quando o relógio é alterado por três horas ou menos, considerações especiais existem como no início e no final do horário de verão. Se o tempo avançar, os trabalhos a serem executados no tempo ignorado serão alterados para serem executados logo após a alteração. Por outro lado, se o tempo retroceder, os trabalhos que caírem no tempo repetido não serão executados novamente.

Somente tarefas executadas em um horário específico, em vez de horárias, ou as marcadas com '*' no especificador de minutos / horas são afetadas. Os trabalhos especificados com carros selvagens são executados imediatamente com base no novo horário. No caso de mudanças de relógio de mais de três horas, o novo horário é usado imediatamente.

No Red hat e no Debian, o cron trata os arquivos cron.d como extensões do arquivo linux crontab, uma vez que seguem o formato especial do arquivo, o que significa que incluem o campo do usuário. Esse recurso visa permitir pacotes que exijam um controle de agendamento mais preciso do que os diretórios diários, mensais ou semanais. Idealmente, esses arquivos devem receber o nome de seus pacotes de fornecedores. Os arquivos devem estar em conformidade com a convenção de nomenclatura usada para as partes executadas, pois precisam consistir apenas de letras maiúsculas e minúsculas, dígitos, hífens e sublinhados. Os arquivos no diretório cron.d são monitorados quanto a alterações, assim como o diretório linux crontab. Para comandos como / bin / ls, certifique-se de usar nomes de caminho absolutos para chamar o comando certo.

Uma introdução ao Linux Crontab

Agora que você conhece os meandros do cron, vamos olhar de perto o linux crontab, que é um programa para instalar, desinstalar ou listar as tabelas para conduzir o próprio daemon. Cada usuário pode ter um linux crontab próprio e os arquivos estão disponíveis no diretório crontabs, mas não para edição direta.

Qualquer comando fornecido em um linux crontab de um usuário será executado como o usuário que o possui. Guias, espaços à esquerda e linhas em branco geralmente são ignorados. Linhas que possuem um sinal de hash como o primeiro caractere não espacial são ignoradas, pois são tratadas como comentários. Vale ressaltar que os comentários não são permitidos nas mesmas linhas dos comandos cron, pois eles serão lidos como parte do comando. Em uma nota semelhante, comentários também não são permitidos em linhas com configurações de variáveis ​​de ambiente.

Em um linux crontab, uma linha ativa com um comando cron ou uma configuração de variável de ambiente, que está no formato “name = value”, onde os espaços podem ser adicionados, se necessário, ao redor do sinal de igual. Quaisquer espaços não iniciais subsequentes fazem parte do valor do nome. A cadeia de valor pode ser colocada entre aspas simples ou duplas para preservar os espaços em branco à esquerda ou à esquerda. Ele não é analisado para substituições ambientais, portanto, você pode achar que linhas como "PATH = $ HOME / bin: $ PATH" não funcionarão conforme o esperado.

Muitas configurações ambientais são definidas automaticamente pelo cron, como HOME e LOGNAME sendo definido a partir da linha de senha do usuário e SHELL sendo definido como / bin / sh e PATH sendo definido como / usr / bin: / bin. Você pode substituir PATH, SHELL e HOME pelas configurações do crontab. LOGNAME, no entanto, não pode ser alterado, pois é o usuário no qual o trabalho está sendo executado. Nos sistemas BSD, essa variável pode ser chamada USER, nesse caso USER também será definido.

Se o envio de e-mails fizer parte dos comandos executados no linux crontab, o cron também consultará MAILTO. Se a variável estiver definida e não estiver vazia, um email será enviado ao usuário nomeado. Mas se estiver vazio, nenhum email será enviado e, em vez disso, será enviado ao proprietário do linux crontab. Se o arquivo cron.allow estiver disponível, você precisará estar listado nele para usar este comando. Se esse arquivo não existir, mas existir um arquivo cron.deny, você deverá ser removido desse arquivo para usar o comando Se nenhum arquivo existir, apenas o superusuário poderá usar o comando, dependendo dos parâmetros dependentes do site. Alternativamente, todos os usuários poderão usar o comando, que é o caso dos sistemas Debian padrão.

Se a opção –u estiver disponível, ele fornecerá o nome de usuário cujo linux crontab requer ajustes. Se não for fornecido, o crontab examinará o crontab do usuário que está executando o comando. É importante usar esta opção sempre por questões de segurança ao executar dentro do su, pois o linux crontab pode ser confundido pelo su. A opção -l está disponível para o crontab atual a ser exibido na saída padrão, enquanto a opção -r remove o crontab atual. O comando -e é usado para editar o linux crontab atual usando editores especificados pelas variáveis ​​ambientais EDITOR ou VISUAL. Você não pode usar nenhum editor que desvincule e recrie o arquivo; você precisa de um editor que edite o arquivo no local. Após sair do editor, o linux crontab ajustado será automaticamente instalado.

O módulo pam_env também é suportado pelo cron no sistema Debian GNU / Linux, carregando o ambiente conforme especificado no arquivo do módulo. No entanto, observe que a configuração do PAM não substitui as configurações mencionadas acima ou as configurações do arquivo crontab. Se você deseja um PATH diferente do local da posição, precisa configurá-lo no arquivo crontab. Por padrão, o Cron enviará e-mails usando o tipo de conteúdo 'text / plain' com o parâmetro do conjunto de caracteres definido como o conjunto de códigos / mapa de caracteres do código do idioma no qual o cron foi inicializado, que é o código do idioma padrão do sistema sem nenhuma variável de ambiente definida ou o código de idioma que as variáveis ​​configuram. Você pode adicionar suas próprias codificações de caracteres para a saída de email, definindo as variáveis ​​'Content_Transfer_Encoding' e 'Content_Type' nas crontabs para corresponder aos cabeçalhos dos nomes.

Cursos recomendados

  • Curso Online de Técnicas Anova para Estúdio R
  • Treinamento de certificação em AngularJS
  • Curso de Certificação ISTQB Nível 1
  • Treinamento de certificação em fundamentos de teste de software

Trabalhando no Crontab

O comando crontab, encontrado nos sistemas operacionais Unix e Unix, pode ser acessado através de um terminal. Para ver o que o crontab está executando no momento, abra um terminal no seu sistema e execute o seguinte comando:

$ sudo crontab -l

Para editar as listas de tarefas crontab, você pode usar o seguinte comando:

$ sudo crontab -e

Este comando abre o editor padrão em seu sistema, que pode ser pico ou vio, para alterar o crontab. Para salvar o trabalho do crontab no seu arquivo crontab, salve e saia do editor. Os trabalhos do Crontab ou cronjobs podem ser escritos da seguinte forma:

* * * * * /bin/execute/this/script.sh

Existem cinco asteriscos no comando acima, com cada um representando partes diferentes da data para agendar o trabalho. Aqui estão eles:

  1. Minuto, variando de zero a 59
  2. Hora, variando de zero a 23
  3. Dia do mês, variando de um a 31
  4. Mês, variando de um a 12
  5. Dia da semana, variando de zero a seis, com zero significando domingo

A lista acima foi fornecida em ordem, então você deve definir o minuto primeiro, seguido da hora, dia do mês, mês e dia da semana. Você pode manter o asterisco se não quiser definir nenhum dos campos, mas é importante observar que o símbolo significa 'todos'. Se você deixar todos os cinco campos indefinidos com os asteriscos intactos, isso significa cada minuto de cada hora, todos os dias de cada semana e mês.

Agora, vamos supor que você queira apenas executar um script a cada meio-dia de um domingo, eis o que você faz:

0 12 * * 0 /bin/execute/this/script.sh

Agora, o script é executado quando o relógio do sistema atinge 1200 horas todos os domingos, todas as semanas de cada mês. Agora, se você deseja executar o script todos os dias úteis às 12 horas, eis o que você escreve:

0 12 * * 1-5 /bin/execute/this/script.sh

O cron executa comandos quando os campos ano, mês, hora e minuto correspondem à hora atual ou quando pelo menos o dia do mês e ano correspondem à hora atual. Um campo pode ser marcado com um asterisco para indicar 'primeiro-último'. Intervalos de números são permitidos, com intervalos sendo dois números separados por um hífen. O intervalo específico é inclusivo; portanto, um intervalo de 8 a 11 para 'horas' especifica a execução na oitava, nona, décima e décima primeira hora. As listas também são suportadas, com cada número separado por vírgulas, como '1, 2, 8, 9'. Você pode misturar e combinar também, para que possa ser '1, 2, 8-11'.

Você pode usar valores de etapa em conjunto com os intervalos, com o '/' após um intervalo, especificando um salto do valor do número no intervalo. Por exemplo, '0-11 / 2' no campo horas especifica a execução do comando a cada duas horas, que seria escrita como uma lista como esta: '0, 2, 4, 6, 8, 10'. Etapas podem ser permitidas após um asterisco, como '* / 2' para indicar um comando a ser executado a cada duas horas. Para os campos dia e mês, você pode usar as três primeiras letras desse dia ou mês específico, e o caso não importa. No entanto, listas e intervalos de nomes não são suportados. O dia da execução pode ser especificado em dois campos: dia da semana e dia do mês. Se os dois campos forem restritos, o comando será executado quando um dos campos corresponder.

O restante da linha é o campo 'sexto', que especifica o comando a ser executado. A parte de comando da linha ocupa uma nova linha ou até um caractere%. É executado pelo sh ou pelo shell especificado na variável SHELL do arquivo crontab. O% no comando será alterado para caracteres de nova linha, a menos que sejam escapados com a barra invertida '\'. Todos os dados após o primeiro sinal de% são enviados como entrada padrão para o comando. Você não pode dividir uma linha de comando em várias linhas.

Agendando truques no Crontab

A formatação pode levar algum tempo para se acostumar, mas aqui estão alguns truques para ajudá-lo. Se você deseja executar um cronjob a cada dez minutos, você pode escrevê-lo desta maneira:

0, 10, 20, 30, 40, 50 * * * /bin/execute/this/script.sh

Ou você pode escrever desta maneira, o que é mais fácil:

* / 10 * * * * /bin/execute/this/script.sh

Você também tem palavras especiais que podem ser adicionadas para o campo do primeiro minuto, em vez de um número, da seguinte forma:

  • @reboot: isso executaria o script uma vez na inicialização do sistema
  • @yearly: para executar o comando uma vez por ano (o formato alternativo seria “0 0 1 1 *”)
  • @anual: uma alternativa à palavra-chave anual
  • @ mensalmente: para executar o comando uma vez por mês (“0 0 1 * *”)
  • @weekly: para executar uma vez por semana ("0 0 * * 0")
  • @daily: para executar uma vez por semana (“0 0 * * *”)
  • @ meia-noite: uma alternativa à palavra-chave diária
  • @hourly: para executar a cada hora (“0 * * * *”)

Armazenamento de saída

Por padrão, o cron salva a saída do trabalho na caixa de correio ou raiz do usuário. Mas você pode tornar a saída mais simples e apresentável, salvando-a em um arquivo de log separado. É assim que se faz:

* / 10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2> & 1

O Linux é capaz de gerar relatórios em vários níveis. Você tem erros padrão STDERR e saída padrão STDOUT, marcados como 2 e 1, respectivamente. A instrução a seguir diz para armazenar os dois STDERR e STDOUT, para criar um único fluxo de dados de mensagens e erros:

2> & 1

Então, definimos o fluxo de saída, agora precisamos atribuir um destino a ele. O '>' substitui o arquivo e '>>' o anexa. Para anexar, o que é sempre mais seguro, você pode usar o seguinte comando:

>> /var/log/script_output.log

Conclusão

Como você pode ver, o cron permite definir tarefas para serem executadas automaticamente em intervalos regulares em segundo plano. Isso permite a criação automatizada de backups, agendamento de atualizações, sincronização de arquivos e muito mais. Você pode fazer tudo isso e muito mais com o crontab.

Artigos recomendados: -

Aqui estão alguns artigos que ajudarão você a obter mais detalhes sobre o Linux Crontab, basta acessar o link.

  1. Perguntas e respostas da entrevista do Linux | Útil e mais solicitado
  2. Carreiras no Linux
  3. Os 10 principais aplicativos Linux úteis para administradores de sistema
  4. Linux vs Windows 10