Cron é um serviço de agendamento de tarefas baseado em tempo encontrado em sistemas operacionais do tipo Unix. Os usuários agendam trabalhos (comandos ou scripts) para serem executados periodicamente em horários, datas ou intervalos fixos.
A origem e história inicial do Cron
A primeira implementação do cron remonta à versão 7 do Unix. O termo “cron” vem da palavra grega para tempo, “chronos”. Esta versão do Unix, lançada em 1979, tinha um programa cron simples que executava tarefas em intervalos especificados. A funcionalidade do Cron foi posteriormente expandida por Paul Vixie em 1987. Esta versão, conhecida como Vixie Cron, é a versão mais comumente instalada hoje e é a versão geralmente referida quando as pessoas mencionam “Cron”.
Expandindo o conceito de Cron
O Cron permite que os usuários automatizem a manutenção ou administração do sistema – embora sua natureza de uso geral o torne útil para coisas como baixar arquivos da Internet e baixar e-mails em intervalos regulares. Um ambiente cron é como uma sandbox na qual os cron jobs são executados fora do ambiente shell normal.
Cada usuário pode ter seu próprio crontab e, embora sejam arquivos em /var/spool/, eles não devem ser editados diretamente. A sintaxe das expressões cron pode ser dividida em dois tipos principais de sintaxe: sintaxe cron Unix e uma sintaxe mais complexa conhecida como sintaxe de expressão cron ou sintaxe cron de quartzo.
A estrutura interna do Cron e como funciona
O Cron opera com base em um arquivo de configuração simples, mas poderoso, conhecido como arquivo “crontab”. Este arquivo contém uma linha para cada tarefa a ser executada, composta por cinco campos de hora e data, seguida de um comando a ser executado em horários especificados.
Os cinco campos representam:
- Minutos após a hora (0 – 59)
- Horas por dia (0 – 23)
- Dias em um mês (1 – 31)
- Meses em um ano (1 – 12)
- Dias da semana (0 – 7, onde 0 e 7 são domingo)
O campo de comando contém a tarefa a ser executada nos horários especificados nos primeiros cinco campos.
Principais recursos do Cron
Os principais recursos do Cron incluem:
- Ele permite que as tarefas sejam executadas automaticamente em segundo plano em intervalos regulares.
- Ele fornece uma plataforma flexível para agendar tarefas (scripts ou comandos) com diversas unidades de tempo.
- Cada usuário pode ter seu próprio arquivo crontab.
- Os cron jobs podem ser programados para serem executados por minuto, hora, dia da semana, dia do mês e mês do ano.
- Cron fornece uma maneira simples e eficaz de automatizar várias tarefas do sistema.
Tipos de Cron
Os cron jobs geralmente podem ser categorizados da seguinte forma:
Tipo | Descrição |
---|---|
Reinício | Executa uma vez na inicialização. |
Anacron | É executado em intervalos especificados em dias. |
Cron do sistema | Armazenados em /etc/crontab e no diretório /etc/cron.d/, eles devem abranger todo o sistema. |
Cron do usuário | Cada usuário pode ter os seus próprios e eles são armazenados em /var/spool/cron/crontabs/. |
Uso do Cron, problemas e suas soluções
O Cron é útil para automatizar tarefas, mas pode causar problemas se não for usado com cuidado. Por exemplo, um cron job mal configurado pode levar a um alto uso da CPU. Além disso, o cron apenas envia por e-mail a saída de seus trabalhos, se houver, para o usuário com o qual ele executa os trabalhos. Isso pode causar erros perdidos se não for verificado regularmente.
As soluções comuns para esses problemas incluem:
- Verificando regularmente o alto uso da CPU e reconfigurando ou interrompendo trabalhos desnecessários.
- Certificar-se de que todos os comandos e scripts sejam executados corretamente antes de defini-los como tarefas cron.
- Redirecionando a saída para um arquivo de log ou configurando um servidor de e-mail para monitorar tarefas cron de forma mais eficaz.
Comparações com ferramentas semelhantes
Existem outros agendadores de tarefas semelhantes ao cron, como anacron e timers systemd. As principais diferenças entre eles podem ser resumidas como:
Ferramenta | Descrição |
---|---|
Cron | Adequado para tarefas a serem executadas em horários específicos do dia. Não executa trabalhos perdidos. |
Anacron | Adequado para tarefas a serem executadas uma vez por dia/semanalmente/mensalmente. Executará trabalhos perdidos quando a máquina estiver online novamente. |
Sistema | Adequado para cenários mais complexos, pois oferece mais opções e se integra bem com distribuições Linux modernas. |
Perspectivas Futuras e Tecnologias Relacionadas
À medida que os sistemas baseados em Unix continuam a evoluir, o mesmo acontece com o Cron. Apesar do surgimento de agendadores de tarefas mais avançados como o systemd, a simplicidade e o poder do Cron garantem que ele permaneça em uso comum até hoje.
A tendência recente de aplicativos em contêineres e arquiteturas de microsserviços também trouxe novas maneiras de usar o Cron. Por exemplo, Kubernetes, uma plataforma popular de orquestração de contêineres, possui um recurso conhecido como CronJobs, que é semelhante ao Cron em sistemas baseados em Unix.
Servidores proxy e Cron
Os servidores proxy podem ser usados de forma eficaz em combinação com o Cron para automatizar certas tarefas. Por exemplo, se você tiver um script que precisa acessar regularmente um site ou API por meio de um servidor proxy, poderá configurar um cron job para executar esse script em intervalos especificados.
O Cron também pode ser usado para alternar proxies em intervalos especificados, reduzindo a chance de qualquer proxy ser bloqueado. Por exemplo, os serviços de proxy do OneProxy podem ser automatizados com Cron para tarefas como coleta de dados, automação de tarefas de mídia social e muito mais.
Links Relacionados
Para obter mais informações sobre o Cron, considere os seguintes recursos: