|
Lucasino publicado um tempo atrás excelente tutorial sobre cron e crontab que eu acho que vale a pena compartilhar. Cron é uma espécie de equivalente a Tarefas Agendadas no Windows, apenas que é tratado a partir do terminal. Aqueles que preferem uma interface visual para atingir o mesmo objetivo, podem ver isso outro item. |
O que é cron?
O nome cron vem do grego chronos, que significa "tempo". No sistema operacional Unix, cron é um gerenciador de processos em segundo plano regular (daemon) que executa processos ou scripts em intervalos regulares (por exemplo, a cada minuto, dia, semana ou mês). Os processos que devem ser executados e a hora em que devem ser executados são especificados no arquivo crontab.
Como Funciona
O cron daemon começa em /etc/rc.d/ o /etc/init.d dependendo da distribuição. O Cron é executado em segundo plano, verifica a tabela de tarefas do crontab a cada minuto / etc / crontab o em / var / spool / cron em busca de tarefas a serem realizadas. Como usuário, podemos adicionar comandos ou scripts com tarefas ao cron para automatizar alguns processos. Isso é útil, por exemplo, para automatizar a atualização de um sistema ou um bom sistema de backup.
O que é o Crontab?
O Crontab é um arquivo de texto simples que armazena uma lista de comandos a serem executados em um horário especificado pelo usuário. O Crontab verificará a data e hora em que o script ou comando deve ser executado, as permissões de execução e o fará em segundo plano. Cada usuário pode ter seu próprio arquivo crontab, na verdade o / etc / crontab presume-se que seja o arquivo crontab do usuário root, quando usuários normais (e até mesmo o root) desejam gerar seu próprio arquivo crontab, usaremos o comando crontab.
Crontab é a maneira mais fácil de gerenciar tarefas cron em sistemas multiusuário, seja como um usuário de sistema simples ou usuário root.
Usando crontab
Estamos começando com um exemplo simples.
Vamos automatizar a atualização de um sistema, para eliminar o chato “Tenho sempre que atualizar e não gosto disso!
Em primeiro lugar faremos um script. Este script será chamado pelo cron e conterá todas as instruções que queremos fazer, portanto é necessário testá-lo em vários casos e de várias maneiras antes de incluí-lo no cron, um script de atualização simples como este:
#! / bin / bash #script update example #escolher sua distribuição # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Remova o # de sua linha de distribuição. No caso de ser Ubuntu / Debian, ele começa com apt-get.
Salvamos o script como update.sh (por exemplo, o diretório de scripts de sua casa). Alteramos as permissões de execução do referido script com:
chmod a + x ~ / scripts / update.sh
Executamos o script algumas vezes para verificar se tudo está funcionando perfeitamente, modificamos o que é necessário (não deve conter erros, caso contrário, o cron apenas repetirá um erro continuamente). Agora, para adicionar a tarefa ao nosso crontab.
Adicionar tarefas ao crontab
Executamos a edição do crontab com crontab -e, em algumas distros (como o Ubuntu) dá-nos a opção de escolher o editor de texto que queremos, o resto ficamos com o vi. O arquivo crontab será parecido com isto.
# mh dom mon dow comando do usuário
Onde:
- m corresponde ao minuto em que o script será executado, o valor varia de 0 a 59
- h a hora exata, o formato de 24 horas é tratado, os valores variam de 0 a 23, com 0 sendo 12:00 meia-noite.
- Sol refere-se ao dia do mês, por exemplo, você pode especificar 15 se quiser executar a cada 15 dias
- Dow significa o dia da semana, pode ser numérico (0 a 7, onde 0 e 7 são domingo) ou as 3 primeiras letras do dia em inglês: seg, ter, qua, qui, sex, sáb, sol.
- usuário define o usuário que executará o comando, pode ser root, ou um usuário diferente desde que tenha permissão para executar o script.
- comando refere-se ao comando ou caminho absoluto do script a ser executado, exemplo: /home/usuario/scripts/update.sh, se ele chama um script, deve ser executável
Para esclarecer alguns exemplos de tarefas cron explicadas:
15 10 * * * usuário /home/user/scripts/update.sh
Ele executará o script update.sh às 10h15 todos os dias
15 22 * * * usuário /home/user/scripts/update.sh
Ele executará o script update.sh às 10:15 todos os dias
00 10 * * 0 root apt-get -y update usuário Root
Ele executará uma atualização todos os domingos às 10h
45 10 * * sun root apt-get -y atualização
O usuário root executará uma atualização todos os domingos (dom) às 10:45
30 7 20 11 * usuário /home/usuario/scripts/updata.sh
Em 20 de novembro às 7h30 o usuário executará o script
30 7 11 11 sun user /home/usuario/scripts/pastel_con_velitas.sh
No dia 11 de novembro às 7h30 e é domingo, o usuário celebrará seu administrador de sistema (ou seja, eu)
01 * * * * usuário /home/usuario/scripts/molestorecordatorio.sh
Um lembrete irritante a cada minuto de cada hora todos os dias (NÃO recomendado).
Eles ainda podem ser manipulados faixas especiais:
30 17 * * 1,2,3,4,5
Às 5:30 da tarde todos os dias de segunda a sexta-feira.
00 12 1,15,28 * *
Às 12h nos dias primeiro, quinze e 28 de cada mês (ideal para folha de pagamento)
Se isso é confuso, o crontab trata strings especiais para definir esses intervalos.
@reboot Executar uma vez, na inicialização
@yearly funciona apenas uma vez por ano: 0 0 1 1 *
@anualmente o mesmo que @ano
@mês é executado uma vez por mês, no primeiro dia: 0 0 1 * *
@weekly Weekly no primeiro minuto da primeira hora da semana. 0 0 * * 0 ″.
@diariamente diariamente, às 12h00 0 0 * * *
@midnight igual a @daily
@horas no primeiro minuto de cada hora: 0 * * * *
Seu uso é muito simples.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade
Por último mas não menos importante:
Gerenciamento de cron job
arquivo crontab
Substitua o arquivo crontab existente por um arquivo definido pelo usuário
crontab -e
Edite o arquivo crontab do usuário, cada nova linha será uma nova tarefa crontab.
crontab -l
Liste todas as tarefas crontab do usuário
crontab -d
Excluir o crontab do usuário
crontab -c diretório
Define o diretório crontab do usuário (deve ter as permissões de gravação e execução do usuário)
crontab -u user
prefixo para lidar com o crontab de outro usuário, exemplos:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user
Esta ferramenta, como muitas outras, pode ser vista com mais profundidade e detalhes em: