Editado 4 meses atrás por ExtremeHow Equipe Editorial
FedoraCronAgendamento de tarefasAutomaçãoLinha de comandoTerminalAdministração de SistemasConfiguraçãoSoftwareComputadores
Tradução atualizada 4 meses atrás
Agendar tarefas é uma parte importante da gestão de servidores e automação em um ambiente Linux. No Fedora, que é uma distribuição Linux altamente popular, uma das ferramentas mais comuns para agendamento de tarefas é o cron. Cron é um agendador de tarefas baseado em tempo em sistemas operacionais do tipo Unix, que pode executar scripts ou comandos automaticamente em intervalos ou horários especificados. Você pode usá-lo para automatizar a manutenção do sistema, backups, monitoramento ou qualquer tarefa repetitiva. Este guia abrangente irá guiá-lo sobre como agendar tarefas usando cron no Fedora.
O cron usa um arquivo de configuração chamado crontab (abreviação de cron table) para gerenciar o agendamento de tarefas. Cada usuário no sistema pode ter seu próprio arquivo crontab. No arquivo crontab, cada linha representa uma tarefa agendada. O cron verifica o conteúdo do crontab de cada usuário e executa as tarefas definidas nele. Estas tarefas consistem em um comando e um agendamento.
A sintaxe básica para uma entrada de crontab é:
* * * * * comando_a_ser_executado
Esta sintaxe significa:
Um exemplo de como isso pode parecer:
30 2 * * 1 /home/user/backup.sh
Este cron job executará o script /home/user/backup.sh
toda segunda-feira (1 representa segunda-feira) às 2:30 AM. Vamos analisar cada parte em mais detalhes para ver como podemos usar essa ferramenta a nosso favor.
A maioria das instalações do Fedora terá o serviço cron instalado por padrão. Se por acaso não estiver instalado, você pode facilmente adicioná-lo. Para ter certeza de que você tem o cron instalado, use o seguinte comando:
sudo dnf install cronie
O comando acima instalará o daemon cron, que é responsável por gerenciar os cron jobs. Após a instalação, certifique-se de que o serviço está em execução:
sudo systemctl start crond sudo systemctl enable crond
O comando start
iniciará o serviço cron, enquanto o comando enable
garante que ele inicie automaticamente na inicialização.
Os usuários podem criar um arquivo crontab para agendar tarefas. Isso pode ser feito digitando o seguinte comando:
crontab -e
O comando acima abre um editor onde você pode escrever seus cron jobs. Se você estiver usando o crontab pela primeira vez, ele pode pedir para você escolher um editor. Escolha seu editor de texto favorito (como nano, vim, etc.).
Ao editar seu crontab, é importante garantir que cada comando de cron job esteja especificado corretamente na sintaxe descrita anteriormente. Após adicionar suas tarefas, salve o arquivo e saia do editor. O cron registrará automaticamente as alterações.
Agora que sabemos como acessar o arquivo crontab e criar cron jobs, vamos dar uma olhada em alguns exemplos comuns:
0 * * * * /home/user/hourly-task.sh
Isso irá executar o hourly-task.sh
do diretório home no início de cada hora.
30 14 1 3 * echo "Lembre-se de verificar logs" >> /home/user/notes.txt
Este comando adicionará uma nota de lembrete ao notes.txt
às 2:30 PM no dia 1º de março.
0 0 * * 0/2 /home/user/cleanup.sh
Nesta configuração, cleanup.sh
é executado a cada outro domingo à meia-noite.
O cron não carrega variáveis de ambiente do .bashrc
, .profile
ou arquivos semelhantes do usuário. Assim, se o seu script depender de variáveis de ambiente específicas, você pode defini-las diretamente no seu arquivo crontab antes do cron job:
PATH=/usr/local/bin:/bin:/usr/bin:/home/user/bin 30 1 * * * /home/user/some_command --options
Cada cron job é executado com um ambiente específico, por isso é importante garantir que os caminhos e variáveis corretas estejam definidos no arquivo crontab.
O cron permite o uso de algumas strings no lugar dos cinco campos de tempo e data, tornando o agendamento mais simples:
@reboot
: Executa uma vez após a inicialização.@yearly
ou @annually
: Executa uma vez por ano, ou seja, 0 0 1 1 *
.@monthly
: Executa uma vez por mês, ou seja, 0 0 1 * *
.@weekly
: Executa uma vez por semana, ou seja, 0 0 * * 0
.@daily
: Executa uma vez por dia, ou seja, 0 0 * * *
.@hourly
: Executa uma vez por hora, ou seja, 0 * * * *
.Essas strings predefinidas tornam a entrada do crontab mais legível e mais rápida de escrever.
Por exemplo, para executar o script daily-maintenance.sh
uma vez por dia, você poderia usar:
@daily /home/user/daily-maintenance.sh
Por padrão, o cron envia a saída (tanto stdout quanto stderr) para o e-mail do usuário na máquina local. Se você quiser redirecioná-la para um arquivo, pode modificar o comando da seguinte maneira:
* * * * * /home/user/script.sh > /home/user/logfile 2>&1
Aqui, 2>&1
redireciona o erro padrão (stderr) para a saída padrão (stdout), e a saída é escrita no logfile
.
Para listar todos os cron jobs do usuário atual, digite:
crontab -l
Para excluir o arquivo crontab do usuário atual, use:
crontab -r
A depuração pode ser difícil porque o cron tem seu próprio ambiente e não carrega a configuração do shell do usuário por padrão. Aqui estão algumas etapas para solucionar problemas de seus cron jobs:
/var/log/cron
ou usando o comando journalctl
no Fedora.Enquanto o agendamento básico lida com a maioria das tarefas, técnicas avançadas podem ser empregadas para necessidades de agendamento mais complexas:
Você pode especificar uma lista de valores para qualquer campo no crontab. Por exemplo, para executar uma tarefa no primeiro e no décimo quinto dia de cada mês:
0 0 1,15 * * /home/user/payroll.sh
Os valores de passo permitem que você especifique intervalos dentro de intervalos. Por exemplo, para executar uma tarefa a cada 10 minutos:
*/10 * * * * /home/user/check-system.sh
O símbolo */10
indica "a cada dez minutos".
O cron é uma ferramenta poderosa e versátil para automação de tarefas, disponível no Fedora e em muitos outros sistemas do tipo Unix. Ao definir precisamente intervalos de tempo e scriptar tarefas repetitivas, administradores de sistemas e usuários podem aumentar consideravelmente a produtividade e a confiabilidade do sistema. Compreender e usar as capacidades do cron pode reduzir significativamente a carga de trabalho manual, agendando eficientemente tarefas que de outra forma exigiriam atenção e intervenção constantes.
Com este guia, você deve agora ter uma compreensão sólida de como configurar e gerenciar cron jobs no Fedora. Se você está fazendo agendamento básico, usando variáveis de ambiente, redirecionando saída ou usando técnicas avançadas de agendamento, o cron oferece muitas opções para personalizar o gerenciamento de tarefas de acordo com suas necessidades específicas.
Explore ainda mais o pacote cronie e aprofunde-se em opções e possibilidades adicionais ao experimentar diferentes jobs que ajudarão a otimizar as operações. A automação é a chave para uma gestão eficaz de sistemas, e dominar o cron é uma habilidade essencial para os usuários de Linux. Continue iterando e refinando sua programação de tarefas, e aproveite o poder do cron para manter seu sistema funcionando de maneira suave e eficiente.
Se você encontrar algo errado com o conteúdo do artigo, você pode