O "Cron”Daemon é um aplicativo Linux integrado que os usuários do Linux utilizam para agendar a execução de processos. Cron pesquisa o “Tabelas Cron" ou "Crontab”Para os arquivos e scripts específicos. O arquivo Crontab fornece um conjunto de comandos que você pode executar regularmente. Ele também fornece os nomes dos comandos utilizados para gerenciar a lista de comando. Crontab Também faz uso do Cronjob Scheduler para realizar operações. De acordo com um conjunto de instruções, Cron é uma função do sistema que fará ou executará processos para você. Crontab é o nome do cronograma, bem como o utilitário usado para essas modificações.
Neste post, abordaremos os seguintes pontos relacionados a Crontab:
Então, vamos em direção a esta jornada!
História:
Quando o sistema operacional permitiu o modo multiusuário para seus usuários, o serviço do sistema CRON foi chamado de “/etc/rc““. Seu algoritmo consiste nas seguintes etapas:
Esta versão de Cron era confiável e direto, mas usava recursos, independentemente de ter algum trabalho para fazer. Durante um experimento no final da década de 1970 na Universidade de Purdue, descobriu-se que um VAX estendendo a VAX compartilhado Serviço de Cron Para todos os 100 usuários, pressionaram demais o sistema.
Versões modernas de Cron:
Novos Crons apareceram com a introdução do projeto Linux e GNU. O "Vixie Cron”, Criado por Paul Vixie em 1987, é o cron mais comum por aí. O Vixie Cron A versão 3 foi introduzida no último trimestre de 1993. Em janeiro de 2004, o ISC Cron foi renomeado para a versão 4.1. A maioria das distribuições de BSD e Linux usa a versão 3, que possui algumas correções menores de bugs. Em 2007, Red Hat separou Vixie-Cron 4.1 e Anacron 2.3 foi adicionado em 2009. Anacron e Dcron são duas outras implementações proeminentes. Anacron não é um programa cron independente. Deve ser chamado por outro cronjob. Matt Dillon, o fundador da Dragonfly BSD, criou Dcron e Jim Pryor assumiu sua manutenção em 2010.
Dale Mellor criou McRon, uma versão Cron baseada em bruxo que é compatível com Vixie Cron, em 2003. Também permite maior flexibilidade, incluindo qualquer código de esquema nas descrições de tarefas e agenda de cálculos. McRon é instalado por padrão sob o gerenciamento de pacotes Guix. Ele também garante que os pacotes necessários sejam instalados e que os crontabs relevantes se referam corretamente a eles. Onde as implementações do CRON não são acessíveis em um ambiente de hospedagem na web, uma solução Webcron define tarefas para executar regularmente.
O que é um Cronjob?
Cron é uma ferramenta que permite agendar tarefas para execução posterior. Você pode usar outro comando se quiser planejar um trabalho único para uma data posterior. Ao mesmo tempo, Cron é ideal para tarefas recorrentes.
Você pode estar familiarizado com os processos em segundo plano no Windows, como serviços. Cron é um daemon que executa sua funcionalidade executando as tarefas em segundo plano. Em um estado ocioso, o daemon espera para realizar uma tarefa do sistema de trabalho ou de outro sistema baseado em Linux presente na rede. Falando sobre a estrutura do arquivo CRON, temos um arquivo cron, um arquivo de texto simples que inclui comandos que serão executados no horário programado. O "/etc/crontab”É o arquivo Crontab padrão do sistema, que existe no seguinte diretório Crontab:“/etc/cron.*/”. Os administradores do sistema podem modificar o arquivo crontab do sistema.
Os sistemas operacionais baseados em Linux suportam vários usuários. Cada um deles pode criar seu arquivo crontab e adicionar comandos para executar tarefas sempre que desejar. Um daemon cron verificará o arquivo crontab e depois executará o trabalho em segundo plano. Você também pode utilizar Cronjobs para criar backups, monitoramento do espaço do disco e automatizar a manutenção do sistema. As tarefas de Cron são ideais para uma máquina que executa sete dias por semana, 24 horas por dia. Enquanto os administradores do sistema usam principalmente tarefas CRON, eles também podem ser extremamente valiosos para desenvolvedores da Web.
Por que usar Cronjob?
Elementos Cronjob:
A maioria dos cronjobs tem três partes:
A maioria dos programas que precisam do uso de um Cronjob fornecerá instruções detalhadas sobre como configurá -lo.
O arquivo Crontab:
Uma linha de arquivo crontab é "inativa" ou "ativa". Uma linha "ativa" é uma entrada de comando cron ou um parâmetro de ambiente. Qualquer linha que seja ignorada, incluindo comentários, é considerada "inativa". Guias, espaços principais e linhas em branco não são levadas em consideração. Linhas com o sinal "#" como o primeiro personagem não espacial é lido como comentários e ignorado. No ambiente, configurações variáveis ou comandos CRON, os comandos não podem existir nas mesmas linhas, porque se você fizer isso, os comentários se tornam parte do comando cron.
Crontab funcionando:
Crontabs pode ser encontrado no diretório local, como em “/var/spool" ou "/var/spool/cron/crontabs”, Que é o seu subdiretório. Mesmo que estejam presentes em qualquer um desses locais, use o comando Crontab para realizar a tarefa de editá -los. Vamos descobrir quais componentes são necessários antes que você possa esperar os resultados desejados das ações Crontab. A entrada no Crontab deve estar presente no primeiro comando. Os cinco parâmetros indicam seu tempo de execução e se deve ser executado ou não. O Crontab pode ser editado primeiro, inserindo o modo de edição com o comando “Crontab -e““. Depois de dar tempo como entrada, o Crontab está pronto para ser executado no horário especificado.
O daemon cron auxilia na execução das verificações necessárias para que o comando Crontab possa ser executado nessa instância. A cada minuto, o daemon Crontab verifica o Crontab. Como resultado, este Crontab contém informações até o minuto. Após a realização do cheque, o comando associado é executado com os campos no Crontab que corresponde à hora atual.
Situações como "falta de horário" durante o horário de verão devem ser evitadas porque o comando pode nem ser executado uma vez. Por outro lado, se ocorrer o tempo mais de uma vez, o comando pode até executar duas vezes. Outro exemplo é que um hífen “-” pode realizar o Cronjob várias vezes ao longo do dia. Por exemplo, se alguém deseja realizar um cronjob na 10ª e 11ª hora do dia, o comando 10-11 pode ser usado. Outro aspecto crítico da execução de Cronjobs é as configurações para permitir que os trabalhos funcionem. Permitir ou negar um usuário para executar Cronjobs pode ser realizado fazendo algumas mudanças no Cron.permitir ou cron.negar arquivos.
Uso de Crontab:
O Linux System Pack incluiu "Crontab" para agendamento de empregos. Consequentemente, a execução de um script como root facilita a manutenção do sistema. É tão simples quanto mudar o Cronjob e, depois disso, aguarde o processo de reinicialização.
Sintaxe do Crontab:
A sintaxe do Crontab compreende seis campos nos quais os cinco primeiros campos estão relacionados à data e hora da execução. Cada campo em um arquivo crontab existe na seguinte ordem:
(s) minuto (s) hora (s) dia (s) Mês (s) da semana (s) comando (s) (s) (s) comando (s)
Confira a seguinte sintaxe do comando crontab:
***** /pathtoscript
Caracteres especiais em expressão:
Strings especiais de Cron
O daemon Cron tem alguns atalhos que facilitam as definições de trabalho.
Essas palavras têm um significado preciso, e você pode utilizá -las na sintaxe em vez da especificação de 5 da coluna da coluna. A seguir, alguns dos atalhos de Cron:
@Hourly: É o mesmo que “0 * * * *”E executa o comando no início de cada hora.
@diário: É o mesmo que “0 0 * * *”E executa o comando uma vez por dia, às 12 A.m. (meia-noite).
@semanalmente: É o mesmo que “0 0 * * 0”E dirige o comando toda semana no domingo à meia -noite.
@por mês: É o mesmo que “0 0 1 * *”E executa o comando às 12 A.m. (meia -noite) o primeiro dia de todos os meses.
@anual: É o mesmo que “0 0 1 1 *”E administra o comando uma vez por ano em 1º de janeiro à meia -noite.
@reinício: Toda vez que o sistema é reiniciado, este comando será executado.
Variável de ambiente:
Quando Cron executa um emprego, um ambiente que define uma linha no crontab pode definir variáveis de ambiente.
No Crontab, uma configuração de ambiente pode ser adicionada como:
nome = valor
Os espaços são opcionais em torno de “valor”. Além.
Cron define algumas variáveis de ambiente para você automaticamente:
Variáveis Crontab:
Algumas das variáveis cron mais usadas estão listadas abaixo:
Opções de comando Crontab:
Instalando Cron no CentOS:
Por padrão, Cron está incluído no CentOS 8. Por alguma razão, se você ainda não o possui, instale -o no seu sistema:
$ sudo dnf install cron
$ sudo systemctl atabille -agora crond.serviço
$ sudo Systemctl Status Crond
Crontab Scheduler: em todo o sistema
Regularmente, a maioria dos serviços usa Crontab. Os Serviços usam suas configurações de Crontab Scheduler diretamente para o “/etc/cron.d”Diretório. Depois disso, o agendador executará automaticamente os arquivos presentes neste diretório. A seguir, estão as pastas pré-configuradas de Crontab: “/Etc/cron.horário ”,“/etc/cron.diariamente ","/etc/cron.semanalmente ”e“/etc/cron.por mês". Os administradores do Linux têm controle total sobre esses diretórios. Ao mesmo tempo, o agendador atravessa e executa esses arquivos crontab regularmente. Além disso, se os usuários de root desejarem executar algo, por exemplo, ele deseja executar um script específico todos os dias, ele colocará o arquivo dentro do “/etc/cron.diário”Diretório.
Acesso Cron:
Você pode atribuir o controle sobre a execução de qualquer arquivo usando Cron. Avalie essa funcionalidade utilizando os seguintes arquivos:
/etc/cron.permitir: Permitir
/etc/cron.negar: Negar
Coisas a ter em mente:
Crontab Management:
Como discutimos Crontab anteriormente, é um arquivo específico que contém o cronograma de empregos executado por Cron. Por outro lado, esses trabalhos não devem ser editados diretamente. O comando crontab é recomendado para esse fim. O comando Crontab permite que você edite o crontab relacionado ao seu perfil de usuário sem a necessidade de alterar seus privilégios. Este comando também notificará você sobre os erros presentes no Crontab, o que não seria possível se editado diretamente. Utilize o seguinte comando para editar seu crontab:
$ CRONTAB -E
Nos sistemas Linux, “/ etc/ diretório”Contém outro arquivo Crontab. Sob o local mencionado, existe um crontab em todo. Utilize o seguinte comando para alterar o Crontab em todo o sistema:
$ sudo nano /etc /crontab
O outro método mais fácil de acessar e editar o arquivo Crontab está utilizando o “Nano" editor. Fazer "Nano”Seu editor padrão seguindo estas etapas:
$ nano ~//.Bash_profile
Adicione a seguinte linha no início do arquivo aberto:
exportar visual = "nano"
Salve a linha adicionada na “ ~/.Bash_profile”E saia. Depois disso, recarregue o “~/.Bash_profile" arquivo.
$ . ~/.Bash_profile
Agora, escreva este comando para adicionar Cronjobs:
$ CRONTAB -E
Este é o arquivo Crontab, onde salvaremos todos os nossos Cronjobs:
Para visualizar o conteúdo do arquivo Crontab, utilize o seguinte comando:
$ CRONTAB -L
Observação: Atualmente, não adicionamos nenhum Cronjob no arquivo Crontab para imprimir nada.
Para remover os cronjobs agendados no arquivo Crontab, escreva este comando:
$ CRONTAB -R
14 Exemplos de Cronjob:
Exemplo 1: Execução de Cronjob Após a cada 50 minutos
O seguinte comando Crontab executará o “atualizadob”Após a cada 50 minutos:
50 * * * * atualizadoBB
Exemplo 2: Execução de Cronjob em tempo e meses especificados
Exemplo de Crontab para executar /usr/local/bin/testscript.sh às 8:00 p.m. Em 20 de janeiro, fevereiro, março e abril:
00 08 20 1,2,3,4 */usr/local/bin/testscript.sh
Exemplo 3: Execução de Cronjob a cada sexta -feira 1 p.m.
O comando abaixo do goleiro permitirá que o sistema execute o “testscript.sh”Toda sexta -feira, 1 p.m.:
0 01 * * sex /scripts /testscript.sh
Exemplo 4: Execução de Cronjob a cada minuto
Para executar um script específico após cada minuto, consulte a sintaxe deste comando:
* * * * * /scripts /testscript.sh
Exemplo 5: Execução de Cronjob em dias especificados
Abaixo está um exemplo que o ajudará se você quiser agendar um Cronjob a ser executado em dias específicos. Este exemplo vai executar o “testscript.sh”Na segunda e quarta -feira às 2 p.m.:
0 02 * * seg, wed /script /testscript.sh
Exemplo 6: Execução de Cronjob na primeira segunda -feira de cada mês
O parâmetro de tempo não é suficiente para definir neste exemplo. Utilizaremos uma condição para especificar que o script específico deve ser executado na primeira segunda -feira de meses:
0 2 * * seg [$ (data +%d) -le 07] && /script /testscript.sh
Exemplo 7: Execução de Cronjob a cada 10 segundos
Novamente, especificaremos uma condição para executar o Cronjob a cada 10 segundos:
* * * * * /scripts /script.sh
* * * * * Sono 10; /scripts/script.sh
Exemplo 8: Execução de Cronjob para várias tarefas
Use (;) para configurar Cron para executar vários comandos da seguinte maneira:
* * * * * /scripts /testscript1.sh; /scripts/testscript2.sh
Exemplo 9: Execução de Cronjob no início de cada ano usando "@yearly"
Executar uma tarefa no primeiro minuto de um novo ano é útil no caso em que você deve enviar desejos de ano novo para alguém.““0 0 1 1 *"É semelhante ao registro de data e hora"@anual“:
@Yearly /scripts /testscript.sh
Exemplo 10: Execução de Cronjob no início de cada mês usando "@montly"
Você pode usar o “@por mês”Timestamp para executar as tarefas mensais, como faturamento para clientes e contas de pagamento:
@montly /scripts /testscript.sh
Exemplo 11: Execução de Cronjob no início de cada semana usando “@Weekly”
Executar qualquer tarefa no início da semana, como limpeza do sistema usando o “@semanalmente”Timestamp. ““semanalmente" é equivalente a "0 0 * * seg”:
@Weekly /bin /testscript.sh
Exemplo 12: Execução de Cronjob no início de cada mês usando "@Daily"
““@diário"Timestamp é equivalente a"0 0 * * *”. É usado para executar o diário baseado em tarefas:
@Daily /Scripts /Script.sh
Exemplo 13: Execução de Cronjob no início de cada hora usando “@hourly”
““@Hourly"Timestamp é equivalente a"0 * * * *”. Você pode utilizar este registro de data e hora para executar tarefas horárias:
@hourly /scripts /testscript.sh
Exemplo 14: Execução de Cronjob para reinicialização do sistema
““@reinício”É útil para ações que você deseja executar sempre que o sistema botas. É útil para lançar automaticamente tarefas em segundo plano. Este tipo de cronjob é usado para agendar os scripts de inicialização.
@reboot /scripts /testscript.sh
Criando Cronjob para usuário específico
Para agendar um Cronjob para um usuário em particular, especifique seu nome da seguinte maneira:
***** nome de usuário /path_to_script
Agora, vamos conferir um exemplo rápido:
50 * * * * Linuxhint atualizadob
Este comando executará o “atualizadob”Após a cada 50 minutos para o“Linuxhint" do utilizador.
Listando Cronjobs:
Use este comando para listar os cronjobs programados em seu sistema:
$ CRONTAB -L
Criando backup de Cronjobs:
Para criar um backup dos cronjobs programados, utilize este comando:
$ CRONTAB -L> CRON -BACKUP.TXT
Verifique o conteúdo do “Cron-backup.TXT”Para garantir que os cronjobs sejam backup ou não:
$ cat cron-backup.TXT
Remova Cronjobs:
Método 1: sem prompt
O "Crontab -r”O comando é usado para remover Cronjobs:
$ CRONTAB -R
Método 2: com rápido
A execução do comando a seguir mostrará um aviso antes de excluir o Crontab:
$ CRONTAB -I -R
Gerenciamento de saída Cronjob:
Como mencionamos na introdução de Cronjob, esses trabalhos operam em segundo plano. Essa é a razão pela qual nem sempre é aparente se eles concluíram a tarefa com sucesso ou não. Neste ponto, você tem algum entendimento relacionado à programação de Cronjob e seu uso. Agora, você pode experimentar várias maneiras de redirecionamento dos cronjobs. Este redirecionamento o ajudará a rastrear a funcionalidade dos Cronjobs.
Por exemplo, você pode enviar a saída de Cronjobs para o endereço de e -mail associado ao seu perfil de usuário Linux se você tiver um agente de transferência de correio instalado e configurado no seu servidor, como “Enviar correio”. Em comparação, um “Mailto”A configuração no topo do crontab também pode ser utilizada para fornecer endereços de e -mail manualmente. Adicione as seguintes linhas ao seu arquivo Crontab, no qual temos um “Mailto”Declaração seguida pelo meu endereço de e -mail, uma diretiva doméstica que se refere ao diretório onde o binário Cron deve ser encontrado, uma única tarefa de cron e um CONCHA Diretiva indicando o shell a ser executado, que é bash em nosso caso.
Mailto = "[email protected] "
Shell =/Bin/Bash
Home =//
50 * * * * Linuxhint atualizadob
* * * * * eco 'execute este comando a cada 50 minutos'
Esta tarefa retornará a mensagem "Execute este comando a cada 50 minutos““. A saída será enviada por e -mail para o endereço de email especificado presente no “MailtoDiretiva. Para evitar receber um email com o resultado, você pode redirecionar a saída da tarefa Cron para um local vazio ou arquivo de log.
Para enviar a saída de um comando agendado para um arquivo de log: Anexar >> até o final do comando, com o nome e o caminho do diretório que contém o arquivo de log, como mostrado abaixo:
* * * * * eco 'execute este comando a cada 50 minutos' >>/diretório/caminho/arquivo/arquivo.registro
Criamos um arquivo de log de amostra para esse fim, por isso escreveremos este comando da seguinte maneira:
* * * * * ECHO 'Execute este comando a cada 50 minutos' >> /testFile /Samplefile.registro
Limites de Cronjob:
Servidor dedicado e VPS: Nesse caso, não existe restrição a tempo da execução de Cronjob.
Compartilhado e revendedor: Um cronjob pode não ser executado mais de uma vez a cada 15 minutos.
Manuseando erros de Cronjob:
Método 1: Usando /dev /nulo
Em vez de receber um alerta de e -mail, você pode enviar facilmente nossos erros de Cronjob e fazer login para dev/null. Tudo o que enviamos ou escrevemos para dev/null é descartado.
* * * * * cd /home /linuxhint && /bin /bash shell-testscript.sh> /dev /null 2> & 1
Método 2: enviando saída para um arquivo específico
É um método popular, e a maioria dos usuários prefere este método. Neste método, você deve criar um arquivo para salvar os logs Cronjob. Se o trabalho for concluído com sucesso, ele imprimirá a saída; Caso contrário, ele imprimirá um erro.
Criamos um arquivo de log de amostra para esse fim, por isso escreveremos este comando da seguinte maneira:
* * * * * cd /home /linuxhint && /bin /bash shell-testscript.SH >> Samplefile.registro
Aqui:
Geradores de sintaxe para Crontab:
A partir da demonstração do exemplo, você pode determinar como é fácil agendar um cronjob. Às vezes, você não pode memorizar uma sintaxe de Cronjob particular. Para tornar o trabalho ainda mais gerenciável, poucos geradores de sintaxe baseados na Web para Cron estão lá para você. Agora, falaremos sobre alguns sites que geram expressões de Crontab. Essas expressões são baseadas em seus insumos. Basta copiar/colar a linha no arquivo Crontab do seu sistema depois de gerar a expressão de Crontab de acordo com o seu requisito.
Crontab Generator:
Crontab Generator é uma ferramenta baseada na Web que permite criar expressões de crontab mais rapidamente e sem esforço. Este site compreende um formulário com várias entradas.
O usuário precisa preencher todos os campos essenciais nos formulários. Nos campos, você pode selecionar o valor para o comando de sintaxe conforme o seu requisito:
Em seguida, esta ferramenta Crontab Generator emitirá um comando na seguinte seção destacada. Copie o comando gerado, cole -o no seu arquivo crontab e você terminou!
Crontab Guru:
Este site é personalizado para fornecer exemplos de amostras de cronjobs. Você só precisa inserir suas informações no site e elas gerarão sintaxe de Crontab em alguns minutos.
Cronmaker:
É outro site que também é construído com o objetivo de gerar sintaxe do comando cronjob:
Front-end-end de Crontab:
Alguns utilitários de front-end Crontab estão disponíveis para criar tarefas CRON usando uma interface gráfica do usuário. Para gerenciar ou adicionar tarefas CRON, não há necessidade de atualizar o arquivo Crontab da linha de comando. Essas ferramentas farão com que o gerenciamento de cronjobs seja uma brisa!
Zeit:
Zeit é um aplicativo de freeware criado na linguagem do computador C ++. Sob a licença GPLV3, o código fonte deste aplicativo é acessível no GitHub. É um "QT"Crontab" e "no“Comando front-end. Podemos utilizar o Zeit para as seguintes tarefas:
Ui Crontab:
A UI Crontab é uma solução baseada na Web para gerenciar Cronjobs no Linux com facilidade e segurança. Você não precisa editar o arquivo Crontab manualmente para criar, excluir e gerenciar tarefas Cron. Com alguns cliques de mouse, você pode fazer tudo neste navegador da web. Crontab UI simplifica criar, editar, parar, remover e fazer backup de tarefas Cron. Ele também desempenha sua parte em importação, exportação e implantação de cronjobs para outras máquinas.
Conclusão:
Cron é uma ferramenta versátil e poderosa que pode ajudá -lo com uma variedade de tarefas de administração do sistema. Você pode automatizar operações que normalmente são complicadas com scripts de shell. Este artigo compreende um guia completo da Crontab for Beginners, que discutiu tudo, incluindo o trabalho de Crontab, seu uso, sua instalação no CentOS, exemplos de cronjobs de amostra e geradores de sintaxe de Crontab.