Pesquisa de site

Agendando tarefas com o comando cron do Linux


Experimente esta forma de superar problemas desafiadores de agendamento diretamente na linha de comando do Linux.

No início de minha jornada no Linux, passei a apreciar os vários utilitários de linha de comando do sistema operacional e a maneira como eles simplificavam as tarefas regulares. Por exemplo, fazer backup de aplicativos em meu servidor Windows frequentemente exigia pacotes de software complementares caros. Por outro lado, o comando tar torna o backup do Linux relativamente fácil e também é poderoso e confiável.

Ao fazer backup do sistema de e-mail do distrito escolar, entretanto, enfrentei um desafio diferente. Os backups não podiam ocorrer durante o dia de trabalho ou no início da noite porque havia pessoas usando o sistema. O backup deveria ocorrer depois da meia-noite e precisava ser confiável. Eu estava acostumado com o Gerenciador de Tarefas do Windows, mas o que usaria no Linux? Foi quando aprendi sobre o cron.

Agendando tarefas no Linux com cron

Cron é um daemon usado para executar comandos agendados automaticamente. Aprender como usar o cron exigiu alguma leitura e experimentação, mas logo eu estava usando o cron para desligar nosso servidor de e-mail, fazer backup dos dados em um arquivo tar compactado e reiniciar o serviço de e-mail às 3 da manhã.

Os comandos para um cron job são armazenados no arquivo crontab em um sistema Linux, que geralmente é encontrado em /etc/crontab. Exiba o conteúdo do seu arquivo crontab com $crontab -l.

Edite o arquivo crontab com $crontab -e.

Alguns sistemas usam como padrão o editor Vi para edição do cron. Você pode substituir essa configuração usando variáveis de ambiente:

$ EDITOR=nano crontab -e

Isso permite que você use o editor nano para editar seu crontab pessoal (se ainda não tiver um, um será criado automaticamente para você).

Todos os comandos crontab possuem parâmetros indicados por um asterisco até que você insira um valor inteiro. O primeiro representa os minutos, depois as horas, o dia do mês, o mês do ano e, por fim, o dia da semana.

Os comentários são precedidos por um hash. Cron ignora comentários, então eles são uma ótima maneira de deixar notas sobre o que um comando faz e por que ele é importante.

Um exemplo de cron job

Suponha que você queira verificar se há vírus e malware em seu diretório inicial com o clamscan todas as semanas às segundas-feiras às 10h. Você também deseja fazer backup do seu diretório inicial todas as semanas, às terças-feiras, às 9h. O uso de arquivos cron e crontab garante que a manutenção do sistema ocorra todas as semanas, independentemente de você se lembrar de executar esses utilitários ou não.

Edite seu arquivo crontab para incluir o seguinte, usando seu próprio nome de usuário em vez de "don" (meu nome de usuário):

# Scan my home directory for viruses
0 10 * * 1 clamscan -ir /home/don
# Backup my home directory
0 9 * * 2 tar -zcf /var/backups/home.tgz /home/don

Se você estiver usando o editor nano, salve seu trabalho com Ctrl+O para gravar o arquivo e Ctrl+X para sair do editor. Após editar o arquivo, use crontab -l para listar o conteúdo do seu arquivo cron e garantir que ele foi salvo corretamente.

Você pode criar trabalhos crontab para qualquer trabalho necessário em seu sistema. Isso aproveita ao máximo o daemon cron.

Agendamento a partir da linha de comando do Linux

Não é nenhum segredo que a parte mais difícil do cron é encontrar os valores corretos para os asteriscos principais. Existem sites, como o crontab.guru, que traduzem dinamicamente o tempo do cron em traduções legíveis por humanos, e o Opensource.com tem uma folha de dicas do cron que você pode baixar para ajudá-lo a mantê-lo correto.

Além disso, a maioria dos sistemas cron modernos apresentam atalhos para valores comuns, incluindo:

  • @hourly : Executa uma vez por hora (0 * * * *)
  • @daily : Executar uma vez por dia (0 0 * * *)
  • @weekly : executado uma vez por semana (0 0 * * 0)
  • @monthly : executado uma vez por mês (0 0 1 * *)
  • @reboot : Executa uma vez após a reinicialização

Existem também alternativas ao cron, incluindo o anacron para trabalhos que você deseja executar regularmente, mas não de acordo com uma programação específica, e o comando at para trabalhos únicos.

Cron é um sistema de agendamento de tarefas útil e tão fácil de usar quanto editar texto. De uma chance!

Artigos relacionados: