Editado 19 Horas atrás por ExtremeHow Equipe Editorial
AutomaçãoAgendamentoLinha de comandoGestão de TarefasScriptsManutenção do SistemaGestão de Data/HoraUtilitáriosScriptingSysAdmin
Tradução atualizada 19 Horas atrás
Cron jobs são um sistema muito poderoso e flexível para agendar tarefas no Linux. Eles permitem que você automatize processos, rotinas ou scripts no seu servidor. Imagine ser capaz de automatizar seus backups, verificar o status do sistema, limpar arquivos temporários ou enviar e-mails recorrentes sem precisar lembrar de realizar essas tarefas manualmente. Cron jobs são executados em segundo plano em horários agendados. Usar cron pode não apenas economizar esforço, mas também salvar preciosas horas de trabalho e aumentar a eficiência geral do sistema.
O daemon cron é um processo em segundo plano que gerencia cron jobs no Linux. Para que cron jobs funcionem, o daemon cron deve estar rodando em seu sistema. A maioria das distribuições Linux vem com cron pré-instalado. No entanto, se não estiver instalado, você pode instalá-lo usando seu gerenciador de pacotes.
Aqui está como fazer isso em distribuições diferentes:
Sistemas baseados em Debian/Ubuntu:sudo apt-get update sudo apt-get install cron
Sistemas baseados em Red Hat/CentOS:sudo yum update sudo yum install cronie
Depois de instalado, você pode iniciar o serviço cron usando o seguinte comando:
sudo systemctl start cron
Certifique-se de que ele inicie na inicialização habilitando-o:
sudo systemctl enable cron
Cron jobs são definidos em um arquivo chamado crontab. Cada usuário pode ter seu próprio crontab, e também há um arquivo crontab em todo o sistema. O arquivo crontab define o cronograma e o comando para cada cron job. Você pode editar um crontab de usuário usando o comando `crontab -e`. Isso abre o arquivo crontab no editor de sistema padrão.
O arquivo crontab contém linhas, cada uma das quais representa uma tarefa agendada, definida em uma sintaxe específica. Uma entrada típica de cron job se parece com isto:
* * * * * /path/to/command
Cada campo é separado por um espaço e representa uma unidade de tempo diferente:
O comando em si segue essas especificações de tempo e define qual ação será executada.
Vamos ver alguns exemplos para entender melhor como funciona um agendamento de cron job.
0 2 * * * /path/to/backup.sh
0 * * * * /usr/local/bin/logrotate
0 0 * * 0 /usr/local/bin/maintenance
0 12 1 * * /usr/local/bin/generate-report
Cron também suporta o uso de operadores como vírgula, hífen e barra para definir múltiplos valores ou intervalos. Aqui está como:
0 1,3 * * * /path/to/script
*/1 5 1-10 * * /path/to/task
*/30 * * * * /path/to/half-hourly-task
O cron job é executado em seu próprio ambiente limitado, e, às vezes, pode não ter as mesmas configurações que seu shell de usuário. Frequentemente, é necessário definir variáveis de ambiente no arquivo crontab para que o script seja executado corretamente. Por exemplo, é comum definir a variável PATH:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin * * * * * /path/to/myjob
Por padrão, cron envia e-mails para o usuário que executa o cron job, contendo qualquer saída produzida pelo job. Se você não quiser receber a saída por e-mail, ou quiser registrá-la, pode redirecionar a saída para um arquivo.
Aqui está como você pode redirecionar a saída padrão e o erro:
* * * * * /path/to/script > /path/to/logfile 2>&1
Este exemplo envia tanto a saída quanto quaisquer mensagens de erro para um arquivo de log.
O comando `crontab` é a principal maneira de configurar cron jobs. Aqui estão as opções mais comumente usadas:
crontab -e
: Editar o crontab do usuário.crontab -l
: Listar os cron jobs do usuário.crontab -r
: Excluir o crontab do usuário.crontab -u username -e
: Editar o crontab de outro usuário se você tiver permissão.Além das operações básicas, existem também padrões de uso avançados que você pode usar para aproveitar ainda mais o poder dos cron jobs.
Às vezes, você deseja que algumas tarefas sejam executadas somente se outra for concluída com sucesso. Nesses casos, a criação de scripts ajuda. Você pode criar um script mestre que primeiro chama um script e depois o outro, verificando as condições de saída ou os resultados esperados.
#!/bin/bash if /path/to/first-script; then /path/to/second-script fi
Coloque este script mestre em seu crontab e você terá combinado efetivamente as duas tarefas.
Às vezes, pode ser conveniente usar um arquivo crontab temporário, especialmente em cenários de script. Você pode criar um arquivo crontab e usá-lo com o comando `crontab` da seguinte forma:
crontab mycronfile
Este comando configura os cron jobs do usuário com base no conteúdo de mycronfile
.
Além do crontab pessoal, há um arquivo crontab de sistema que agenda jobs para todos os usuários. Ele está localizado em /etc/crontab
. Aqui, os jobs têm um campo adicional antes do comando, que especifica o usuário sob o qual o script será executado. Scripts gerais de manutenção do sistema podem ser encontrados aqui.
/etc/crontab * * * * * user /path/to/command
Além disso, scripts em diretórios como /etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
e /etc/cron.monthly
são executados em seus respectivos horários, e isso é gerenciado pela configuração do sistema.
O Crontab também suporta strings especiais em vez dos cinco campos:
0 0 1 1 *
.0 0 1 * *
.0 0 * * 0
.0 0 * * *
.0 * * * *
.Essas palavras-chave facilitam a determinação de programas comuns.
Segurança é uma consideração importante ao lidar com cron jobs. Usuários com acesso à funcionalidade cron podem criar seus próprios jobs, que podem interagir com o sistema. Arquivos /etc/cron.allow
e /etc/cron.deny
podem gerenciar quais usuários têm o privilégio de usar cron.
Por padrão, se /etc/cron.allow
existir, ele deve conter o nome do usuário para permitir o acesso ao cron. Caso contrário, se /etc/cron.deny
existir, ele não deve conter o nome do usuário para permitir o acesso. Se esses arquivos não existirem, geralmente, apenas o root pode agendar cron jobs.
Cron jobs podem causar erros se a sintaxe do comando estiver incorreta ou se as condições ambientais não forem atendidas. Aqui estão algumas maneiras de testar e resolver problemas de cron jobs.
Teste seu comando manualmente no terminal para garantir que ele funciona conforme o esperado, já que cron não fornecerá um prompt interativo.
Defina temporariamente o cron job para rodar a cada minuto para garantir que ele dispare corretamente.
* * * * * /path/to/command
Você pode verificar o log do daemon cron para identificar quaisquer problemas. Este arquivo de log geralmente está localizado aqui:
/var/log/cron /var/log/syslog (dependendo da distribuição)
Este log pode ajudar a determinar se o cron job foi executado ou se encontrou um erro.
Como mencionado anteriormente, redirecionar a saída para um arquivo pode ajudar a capturar mensagens de erro para investigação.
Cron é uma ferramenta fundamental em sistemas Linux, proporcionando agendamento automatizado de tarefas com confiabilidade e flexibilidade. Ao entender a sintaxe, ambiente e configuração de cron jobs, você pode gerenciar eficientemente tarefas rotineiras, otimizando seus processos de trabalho. Seja você um administrador de sistemas ou um desenvolvedor, dominar os cron jobs pode aumentar significativamente sua produtividade.
Espero que este guia detalhado ajude você a usar cron jobs de forma eficaz. Aproveite o agendamento!
Se você encontrar algo errado com o conteúdo do artigo, você pode