18.06.2024

Como usar o CRON no Linux?

Ao trabalhar com o Linux ou com outras distribuições diariamente, há uma lista de tarefas que precisam ser feitas de hora em hora, diariamente ou mensalmente. No entanto, ninguém cancela o fator humano e é muito fácil esquecer de executar uma tarefa simples ou uma lista rotineira delas. Para automatizar esse tipo de coisa, existe um agendador de tarefas - CRON! Ele permite que você execute os comandos necessários em uma determinada programação ou intervalo.

O que é o Cron e como posso encontrá-lo?

O Cron é um utilitário de sistema para automatizar a execução de tarefas, scripts, comandos de utilitários e serviços com uma programação predefinida de horários ou intervalos precisos. Essa solução permite que você execute tarefas rotineiras e constantes sem a participação do usuário. O Cron é composto de várias partes:

Vamos verificar se o utilitário está instalado em seu sistema e onde encontrá-lo. Para gerenciadores de pacotes do tipo RPM, use o comando:

dnf info crontabs

Screenshot №1 — Verificar o cron de instalação

Se você estiver usando o gerenciador apt, use apt list para pesquisar:

apt list | grep ‘.*cron.*\binstalled\b.*’

Isso exibirá uma lista de utilitários instalados mencionando o cron, a partir da qual você pode inferir o software instalado!

Instalação do cron

Se você descobrir que os pacotes não estão presentes em seu dispositivo, será necessário instalá-los por meio do comando para distribuições do tipo apt. Como o Debian e o Ubuntu:

apt update && apt upgrade && apt install cron

Para sistemas do tipo RPM, o comando para instalar um pacote com suas dependências pode ter a seguinte aparência:

dnf update && dnf upgrade && dnf install crontabs

Depois de nos certificarmos de que todas as dependências do pacote estão instaladas por meio do comando crontab, podemos passar para sua sintaxe!

Sintaxe e princípio de funcionamento do cron

Há alguns blocos básicos usados para criar uma tarefa no cron:

minutes hours hours days days months days_weeks username /path/to/command

O primeiro bloco com valores de tempo que, em ordem, indicam o momento em que a tarefa deve ser executada. Em seguida, vem o nome do usuário a partir do qual ela deve ser executada, bem como o caminho completo para o comando. Se o nome não for especificado, a tarefa será atribuída ao usuário pelo qual foi criada.

Por exemplo, precisamos exibir um texto na hora exata mais próxima e gravá-lo em um arquivo. Para fazer isso, vamos escrever o comando:

crontab -e

Uma janela com campos vazios será aberta no terminal, esse é o nosso arquivo de tarefas, no qual podemos escrever um deles. Para fazer isso, vamos acessar o modo de edição por meio do botão i e escrever a seguinte linha:

27 7 * * * * * echo ‘Good morning $USER!’ >> /tmp/hello.txt

Screenshot №2 — Tarefa para o cron

Isso significa que todos os dias, às 7 horas e 27 minutos, o comando write to file será executado! Em seguida, pressione Esc para sair do modo de edição e digite :wq para salvar e sair do editor.

Se esses comandos não lhe parecerem simples, substitua o editor pelo nano, onde os controles podem ser mais claros.

Para fazer isso, digite o seguinte comando; se não for difícil, pule esta etapa:

apt update && apt upgrade && apt install nano \
EDITOR=nano

Vamos voltar ao nosso gerenciador de tarefas! Depois que uma tarefa for adicionada, o cron emitirá um alerta sobre ela e, para verificar a lista de tarefas atuais, você precisará escrever:

crontab -l

Screenshot №3 — Lista de cron

Ótimo! A tarefa foi criada e agora precisamos verificar sua operacionalidade. Para isso, podemos aguardar o tempo para o qual a tarefa foi definida ou executar o arquivo à força por meio do comando:

run-parts /etc/cron.d/

Depois disso, corrigiremos o resultado:

Screenshot №4 — Resultado da tarefa cron

O Cron trabalhou em uma tarefa e gravou dados em um arquivo, mas e se a tarefa não for concluída? Como posso saber quais ações o cron executou?

Logging de cron

Para visualizar as ações do utilitário, é necessário abrir um arquivo de texto com os registros por meio do seguinte comando:

tail /var/log/cron

Ou use outro caminho:

tail /var/syslog | grep ‘cron’

O que abrirá uma lista de atividades recentes:

Screenshot №5 — Logs do cron

Nas últimas linhas, você pode ver que o serviço CROND cronometrou o tempo limite do comando e depois foi encerrado. Se a lista de tarefas no cron estiver desatualizada, você poderá excluir todas as tarefas por meio do comando:

crontab -r

Todas as etapas do tutorial podem ser executadas em poderosos servidores em nuvem. O Serverspace fornece servidores VPS isolados para uso comum e virtualizado.

Screenshot №6 — Criar servidor

Levará algum tempo para implementar a capacidade do servidor. Depois disso, você poderá se conectar de qualquer uma das formas convenientes!

Exemplo de uso do cron

Se considerarmos tarefas reais, o cron ajuda a rotacionar arquivos e registros temporários, limpar diretórios temporários e criar backups. Tanto para bancos de dados quanto para outros sistemas. Por exemplo, vamos considerar a limpeza de diretórios, todos os dias em intervalos de 2 horas e 0 minutos com o comando cleanup com base no armazenamento de mais de um dia:

0 */2 * * * /usr/bin/find /tmp -type f -mtime +1 -exec rm {} \ 

Vamos verificar se ele funciona usando os utilitários e métodos descritos acima:

Screenshot №7 — Limpar arquivo

Depois de verificar se o utilitário executou o comando apropriado, podemos declarar o domínio bem-sucedido do CRON!