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:
crontab -e
Ele vai puxar um arquivo para editar trabalhos de cron com:
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 especificando5
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 hora0
do dia seguinte. Essa mesma lógica se aplica à declaraçãominuto
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.
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:
Se você esperar até o minuto seguinte, verá o arquivo crontab_test
localizado em seu diretório HOME:
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:
- Certifica-se de que o diretório
~/.local/tmp/backup_dir
exista no sistema. - 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:
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
:
Em seguida, você pode testar executar nosso script executando ~/backup_script.sh
, que simplesmente informa ao nosso sistema o caminho para o nosso script:
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?Última atualização deste artigo: 7 de december de 2021