Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
O "crontab" no Linux oferece uma flexibilidade enorme para agendar e automatizar uma variedade de tarefas, desde simples backups até tarefas complexas de manutenção do sistema. Abaixo, forneço uma série de exemplos que demonstram como configurar diferentes tipos de tarefas utilizando o crontab
. Esses exemplos ajudarão a ilustrar o poder e a versatilidade dessa ferramenta.
Exemplos:
Se você quiser executar um script a cada minuto, use a seguinte configuração:
* * * * * /home/user/script.sh
Esse comando executará /home/user/script.sh
todos os minutos.
Para agendar uma tarefa que execute diariamente à meia-noite:
0 0 * * * /usr/bin/daily_task.sh
Isso fará com que o script daily_task.sh
seja executado exatamente à meia-noite todos os dias.
Para executar um comando a cada hora, no minuto 0:
0 * * * * /home/user/hourly_task.sh
Isso executará o script hourly_task.sh
no início de cada hora.
Para agendar uma tarefa para rodar todos os domingos às 3 da manhã:
0 3 * * 0 /home/user/sunday_task.sh
Este comando executará sunday_task.sh
todos os domingos às 3:00.
Para executar uma tarefa no primeiro dia de cada mês:
30 4 1 * * /home/user/monthly_task.sh
Isso executará monthly_task.sh
às 4:30 da manhã no dia 1 de cada mês.
Se você deseja limpar arquivos temporários a cada 15 minutos:
*/15 * * * * /usr/bin/cleanup_temp.sh
Esse comando executará cleanup_temp.sh
a cada 15 minutos.
Para agendar backups durante os dias úteis (segunda a sexta) às 2:30 da manhã:
30 2 * * 1-5 /home/user/backup.sh
Isso executará backup.sh
às 2:30 da manhã de segunda a sexta-feira.
Para reiniciar um serviço (por exemplo, Apache) todos os dias às 5 da tarde:
0 17 * * * /usr/sbin/service apache2 restart
Este comando reiniciará o serviço Apache diariamente às 17:00.
Para enviar um relatório semanal por e-mail toda segunda-feira às 8:00:
0 8 * * 1 /usr/bin/send_weekly_report.sh | mail -s "Weekly Report" user@example.com
Este comando executará send_weekly_report.sh
e enviará a saída por e-mail toda segunda-feira às 8 da manhã.
Se você deseja sincronizar diretórios de hora em hora, use:
0 * * * * rsync -av /source/directory/ /destination/directory/
Isso executará a sincronização entre os diretórios a cada hora.
Para executar uma tarefa apenas no dia 15 de cada mês às 6:00 da manhã:
0 6 15 * * /home/user/monthly_report.sh
Isso executará monthly_report.sh
no dia 15 de cada mês às 6:00.
Para limpar o cache de DNS diariamente às 2:00 da manhã:
0 2 * * * /etc/init.d/nscd restart
Isso reiniciará o serviço nscd
, limpando o cache de DNS, todos os dias às 2:00.
Para fazer backup de um banco de dados MySQL diariamente:
0 0 * * * /usr/bin/mysqldump -u root -pPassword dbname > /home/user/db_backup.sql
Este comando fará o backup do banco de dados dbname
diariamente à meia-noite.
Para apagar arquivos antigos no diretório /tmp
todos os dias às 1:00 da manhã:
0 1 * * * find /tmp -type f -mtime +30 -exec rm {} \;
Isso removerá arquivos com mais de 30 dias no diretório /tmp
.
Para agendar atualizações automáticas de pacotes todos os sábados:
0 4 * * 6 apt-get update && apt-get upgrade -y
Isso atualizará os pacotes do sistema todos os sábados às 4:00 da manhã.
Para gravar o uso da CPU em um arquivo de log a cada 5 minutos:
*/5 * * * * top -b -n1 | grep "Cpu(s)" >> /home/user/cpu_usage.log
Isso registrará as informações da CPU em cpu_usage.log
a cada 5 minutos.
Para verificar se um serviço está em execução e enviar uma notificação se ele parar:
*/10 * * * * systemctl is-active --quiet apache2 || echo "Apache stopped" | mail -s "Alert" user@example.com
Este comando verifica o serviço apache2
a cada 10 minutos e envia um e-mail se o serviço parar.
Para bloquear um usuário específico (por exemplo, user123
) de fazer login de segunda a sexta das 22:00 às 6:00:
0 22 * * 1-5 /usr/sbin/usermod -L user123
0 6 * * 1-5 /usr/sbin/usermod -U user123
Isso bloqueará o usuário user123
às 22:00 e desbloqueará às 6:00 de segunda a sexta.
Para enviar um relatório do uso de disco ao administrador toda sexta-feira às 9:00:
0 9 * * 5 df -h | mail -s "Disk Usage Report" admin@example.com
Este comando enviará o uso de disco por e-mail toda sexta-feira às 9:00.
Para remover logs com mais de 7 dias todos os dias às 3:00:
0 3 * * * find /var/log -type f -mtime +7 -exec rm {} \;
Isso apagará todos os arquivos de log com mais de 7 dias no diretório /var/log
.
Para checar e corrigir permissões de arquivos todos os dias às 23:00:
0 23 * * * chmod -R 755 /var/www/html
Este comando corrigirá as permissões dos arquivos no diretório /var/www/html
diariamente.
Para fazer backup de arquivos importantes toda segunda-feira às 4:00:
0 4 * * 1 tar -czf /home/user/backups/important_files_$(date +\%Y\%m\%d).tar.gz /home/user/important_files/
Isso criará um arquivo tar.gz com data no nome do backup dos arquivos importantes.
Para programar o desligamento do sistema às 23:00 todos os dias:
0 23 * * * /sbin/shutdown -h now
Isso desligará o sistema todos os dias às 23:00.
Para sincronizar o relógio do sistema com um servidor NTP todos os dias às 12:00:
0 12 * * * /usr/sbin/ntpdate pool.ntp.org
Este comando sincroniza o relógio do sistema ao meio-dia diariamente.
Para verificar a conexão à internet a cada 10 minutos e registrar o resultado:
*/10 * * * * ping
-c 1 google.com || echo "Internet down" >> /home/user/internet_status.log
Isso verificará a conexão à internet e registrará uma falha no arquivo internet_status.log
.