Destruindo Jargões Linux: O que é um Cron Job no Linux?

Nesta parte do nosso Destruindo Jargões Linux, você aprenderá sobre cron no Linux. Você também aprenderá o básico de criar serviços de cron editando crontab.

7 de dezembro de 2021
Destruindo Jargões Linux: O que é um Cron Job no Linux?

Nesta parte da nossa série Destruindo Jargões Linux, você aprenderá sobre cron no Linux. Você também aprenderá o básico de criar serviços cron editando crontab.

O que é um cron job no Linux?

Cron é um utilitário de linha de comando para executar comandos pequenos e rápidos em uma base programada. Esta é uma ferramenta sysadmin útil e clássica para automatizar várias tarefas, combinando-a com outras ferramentas. Por exemplo, algumas pessoas combinam rsync e cron para criar automaticamente um backup diário ou semanal em um determinado momento. Algumas pessoas o usam para analisar registros de servidores e combiná-lo com a função de e-mail para enviar um e-mail se houver certo tipo de erro detectado nos logs.

Cron é como o canivete suíço. Pode ser usado para uma variedade de casos de uso. Depende da sua imaginação sobre como usá-lo.

Começar com cron é super fácil, e só leva uma questão de segundos para começar. Mas antes de te mostrar isso, discutirei outra coisa que muitas vezes confunde usuários do Linux.

cron vs cron job vs crontab

É provável que você se depare com três termos que soam semelhantes um ao outro: cron, cron job e crontab. Deixe-me dizer rapidamente o que são esses:

cron: Este é o programa real que você instala em seu sistema e é executado como um daemon.

cron job: Um job no Linux é um programa que está em funcionamento. O Cron pode lidar com várias tarefas e executá-las no horário agendado. Cada uma dessas tarefas são referidas como "cron jobs".

crontab: Este é o arquivo (e o comando) onde você define qual tarefa executar e com que frequência executá-la. Um crontab pode ter vários cron jobs nele em uma forma tabular onde cada linha é um cron job.

Deixe-me compartilhar um exemplo de cron job de amostra que é executado a cada hora e imprime "Linux é legal!" para um nome de arquivo crontab_log.txt.

0 * * * *  echo "Linux is Cool!" >> ~/crontab_log.txt

Mesmo o mais simples cron job pode parecer assustador e intimidador. Isso porque você precisa saber como ler um cron job corretamente.

Levarei este conhecimento teórico de cron para o próximo nível na próxima seção.

Começando com Cron

Vamos começar com (outro) exemplo simples de como cron funciona.

Para criar cron jobs, ou os comandos que cron executará, você simplesmente executa:

Comandos para usar no terminal

crontab -e

Ele vai puxar um arquivo para editar trabalhos de cron com:

arquivo crontab

Exibição padrão do crontab

Todas as linhas que começam com # (que são todas as linhas) só servem para ajudá-lo a orientar sobre como usar o cron, e podem ser removidas se você não precisar delas.

Usaremos o seguinte como nosso primeiro cron job:

* * * * * touch ~/crontab_test

Vamos rapidamente passar pelo que isso vai fazer:

Os cron jobs vêm na forma minuto hora dia mês semana comando.

  • minutoneste contexto simplesmente significa que minutos de uma hora o trabalho vai rodar. Assim, especificando 0 seria executado no início de uma hora, e especificando 5 rodaria no quinto minuto de uma hora.
  • Em seguida, a declaraçãohora especifica quais horas de um dia um trabalho pode ser executado, variando de valores de 0 a 23. A razão pela qual não há uma opção de 24 horas aqui é que 23 vai até o final do que seria 11:59, momento antes da meia-noite, ou hora 0 do dia seguinte. Essa mesma lógica se aplica à declaração minuto mencionada anteriormente.
  • dia especifica em que dia de um mês um job pode ser executado, sendo 1-31 (ao contrário dos exemplos anteriores que começaram em 0).
  • mês especifica quais meses do ano um job pode ser executado, e leva valores que variam de 1 a 12.
  • Por fim,semanaespecifica quais dias da semana um job é executado, a partir do domingo, com valores de 0 a 6, ao contrário dos dois últimos.

Em seguida, especifique comando que é apenas o comando que você deseja executar.

explicação crontab

Se você quiser mais ajuda para entender a parte da semana, do mês, da hora, do dia, eu recomendo muito o site crontab guru, que pode ajudar muito a quebrar o que exatamente está acontecendo:

Seguindo o exemplo anterior de * * * * * touch ~/crontab_test porém, você estará simplesmente executando o touch ~/crontab_test a cada minuto.

Vamos colocar isso no crontab e depois vê-lo em ação:

exemplo de cron 1

Se você esperar até o minuto seguinte, verá o arquivo crontab_test localizado em seu diretório HOME:

resultado do trabalho cron

E esse é o básico para usar o cron!

Um exemplo útil de cron job

Isso foi muito simples (e inútil provavelmente).

Digamos que você queira fazer algo um pouco mais complexo, digamos um script de backup que precisa copiar arquivos de vários diretórios em seu sistema em uma única pasta e, em seguida, arquiva esse backup em um único arquivo.

Isso pode ser facilmente feito simplesmente colocando nossos comandos em um script, que pode então ser chamado pelo cron.

Vamos usar o seguinte script como exemplo:

#!/usr/bin/bash
echo "Fazendo backup..."
mkdir -p ~/.local/tmp/
tar -Pc ~/Documentos/ -f ~/.local/tmp/backup.gz

Este script faz as seguintes coisas:

  1. Certifica-se de que o diretório ~/.local/tmp/backup_dir exista no sistema.
  2. Coloca tudo de ~/Documentos/ em um arquivo localizado em ~/.local/tmp/backup.gz.

Vamos executar o script manualmente primeiro para que possamos ver que ele realmente funciona.

Primeiro, vamos colocar o script em ~/backup_script assim:

exemplo complexo de cron

Em seguida, basta copiar o conteúdo do script que foi mostrado acima no arquivo.

Em seguida, você precisa dizer ao sistema que nosso script pode ser executado simplesmente executando chmod +x ~/backup_script:

exemplo complexo de cron 1

Em seguida, você pode testar executar nosso script executando ~/backup_script.sh, que simplesmente informa ao nosso sistema o caminho para o nosso script:

resultado complexo de cron

Em seguida, você pode restaurar esse backup apenas executando tar -xf ~/.local/tmp/backup.gz -C diretorio_de_saida, onde a diretorio_de_saida é o diretório para salvar os arquivos.

Este script agora pode ser executado em uma base programada usando o Cron!

Por exemplo, se você quiser que o script seja executado diariamente às 3 da manhã, você poderia usar a seguinte sintaxe em cron:

0 3 * * * ~/backup_script.sh

E então você teria backups sendo criados diariamente.

Conclusão

E isso é apenas a introdução ao cron. É amplamente utilizado pelos sysadmins embora eu não tenha certeza de muitos casos de uso para usuários de Linux desktop. Se você fizer isso, por favor, sugira alguns na seção de comentários.

Via itsfoss.com. Você pode conferir o post original em inglês:

Destruindo jargões Linux: What is a Cron Job in Linux?
Aproveite e assista um de nossos vídeos