Um Cron ou Cron job é um agendador baseado em tempo comum em sistemas Linux / Unix. Ele agenda tarefas de usuário especificadas para serem executadas periodicamente em data, hora ou intervalos fixos. A maioria dessas tarefas são scripts para executar funções como backups e muito mais. Para criar esses cron jobs, usamos os comandos crontab. Um crontab é um comando / utilitário UNIX usado para criar e gerenciar tarefas cron.
Como você verá abaixo, criar e editar um cron job é bastante simples. A parte mais incrível é que você não precisa reiniciar o cron ou mesmo o seu PC depois de criar ou editar um cron job. Basta salvar o arquivo e você está pronto para ir.
Usos comuns de Cron Jobs
- Configurando a hora do hardware: o Network Time Protocol é usado por muitos computadores para definir a hora do sistema, mas não define a hora do hardware. Com o cron, você pode definir a hora do hardware com base na hora do sistema.
- Agendando tarefas e executando programas que executam programas diários: com o serviço cron, você pode executar muitos serviços do sistema que precisam de prompt diário como o Logwatch.
- Limpeza de diretório automaticamente, execução de programas de backup e muito mais.
Partes básicas de um comando cron
A sintaxe padrão do crontab é a seguinte:
a b c d e NOME DE USUÁRIO / caminho / para / saída de script
1.A hora e a data, juntamente com o quão repetitivo o trabalho será, são especificados pelos cinco campos:
-
- uma: Minutos: (Variando de 0 - 59)
- b: Horário: (Variando de 0 - 23 )
- c: Dias: (Variando de 0 - 31 )
- d: Meses: (Variando de 0 - 12 )
- e: Dias da semana: (variando de 0 - 7. )
- uma: Minutos: (Variando de 0 - 59)
Nota: os dias começam na segunda-feira. 0 e 7 representam domingo
2. NOME DO USUÁRIO
: Lembre-se de substituí-lo pelo seu nome de usuário
3. O local específico e o script a serem executados pelo cron são especificados pelo terceiro segmento:
/ caminho / para / script
4. A última seção define a notificação para o usuário após a conclusão do trabalho como uma forma de manter o controle das tarefas:
resultado
No entanto, sua caixa de entrada pode estar cheia de pequenas tarefas que são frequentemente canalizadas. Para evitar isso, você pode desativar a saída automática de e-mail adicionando a string abaixo ao seu comando cron:
> / dev / null 2> & 1 e.g a b c d e NOME DE USUÁRIO / caminho / para / script> / dev / null 2> & 1
Além disso, o cron usa mais quatro valores usados na especificação de vários valores em um campo. Eles são:
- Asterisco (*): Refere-se a todos os valores em um campo.
- A vírgula (,): Use para separar uma lista de valores no comando cron.
- Traço (-): Especifique um intervalo de valores.
- Barra para frente (/): divide um valor em diferentes etapas.
Configurando os trabalhos do cron
Os comandos crontab são responsáveis por criar e editar tarefas cron porque os arquivos cron não devem ser editados diretamente. O crontab define como você pode criar, editar, listar, depurar, instalar e desinstalar as tarefas cron.
Antes de começar a trabalhar com cron, é essencial garantir que seu Linux Desktop ou Servidor esteja atualizado executando os comandos abaixo:
sudo apt update sudo apt upgrade
Se você não tiver o pacote cron instalado em seu sistema, instale-o com o comando abaixo:
sudo apt-get install cron
Como editar o arquivo crontab?
Para completar o processo, você terá que configurar o cron job. O usuário conectado quando um cron job é criado automaticamente se torna o proprietário. Isso pode ser alterado criando um proprietário de trabalho que será responsável por gerenciar o trabalho cron, como veremos neste post.
Para abrir o arquivo de configuração crontab para o usuário atualmente conectado, execute o comando abaixo:
crontab -e
O sistema solicitará que você escolha um editor adequado. No nosso caso, vamos escolher a primeira opção (editor nano).
Você pode adicionar uma tarefa agendada por linha de acordo com suas preferências.
Ao adicionar as tarefas, termine salvando o arquivo e saia. Todas as instruções fornecidas serão lidas e executadas pelo cron daemon. As alterações serão aplicadas mesmo sem reiniciar o sistema, pois o repositório é atualizado automaticamente.
Editar crontab para um usuário diferente
O Crontab pode ser editado para diferentes usuários usando um comando na sintaxe abaixo:
crontab -u other_username -e
Como usar caracteres especiais em comandos crontab
Personagens e operadores ditam mais personalização de seu sistema, pois estendem os recursos de uma tarefa cron.
- A barra é usada para dividir uma string de tempo em etapas especificadas. Por exemplo, para executar um backup a cada 30 minutos, podemos usar:
* / 30 * * * *
- O asterisco (*) é usado para executar todos os valores a serem executados. Por exemplo:
* / 15 ***
- O traço (-) é usado para determinar a gama de atividades, como o número de dias. Para
Por exemplo, executando o código às 6h todos os dias da semana, usaremos;
0 6 * * 1-5 / root / backup.sh
Aqui, 06 representa 6h. 1-5 representa o número de dias (de segunda a sexta).
- Uma vírgula especifica as instâncias individuais quando o código deve ser executado:
0 4 * * 2,4 / root / backup.sh
O comando acima executaria seu código de script às 4h na terça e na quinta.
- Você também pode combinar vários curingas para personalizar ainda mais seus comandos. Por exemplo, para executar nosso script a cada dois dias, 35 minutos após a hora, podemos usar o comando abaixo:
35 1-23 / 2 * * * / caminho / para / script / script.sh
1-23 especifica o intervalo de horas, / 2 define o intervalo a cada duas horas.
Opções de cron
- Liste todos os cron jobs
Você pode querer listar os trabalhos do cron em seu sistema sem desbloquear o arquivo de configuração do crontab. Isso pode ser feito iniciando seu terminal e digitando o comando abaixo:
crontab -l
Esse comando lista todos os cron jobs presentes em seu sistema.
- Exclua todos os trabalhos do crontab
Para excluir todos os comandos crontab, você pode usar o comando abaixo:
crontab -r
- Excluir um cron job para outro usuário.
crontab -r -u outro-nome de usuário
Use Strings no Crontab
Strings são ferramentas imensamente úteis para desenvolvedores, pois evitam a escrita repetitiva de segmentos de código. Felizmente, crontabs suportam vários valores de strings. Eles incluem:
@hourly:
-igual a - “0 * * * *“ (Executa uma vez a cada hora)@meia-noite:
-igual a - “0 0 * * *“ (Executa uma vez a cada dia)@diariamente:
mesmo que meia-noite@semanalmente:
-o mesmo que - “0 0 * * 0“ (executa uma vez a cada semana)@por mês:
-igual a - “0 0 1 * *“ (Executa uma vez a cada mês)@anualmente:
-igual a - “0 0 1 1 *“ (Executa uma vez a cada ano)@anual:
semelhante a @anualmente@reinício:
Executado uma vez após cada reinicialização / reinicialização / inicialização.
Um bom exemplo; se você tiver um script de backup que deseja executar todos os dias, use o comando abaixo:
@daily / path / to / backup_script.sh
Exemplos de cron jobs
Aqui está uma lista de tarefas cron básicas que podem ser usadas ao começar:
-
- Para executar um script a cada minuto:
* * * * * / seu / script / caminho.sh
- Para executar um script a cada 40 minutos:
40 * * * * / seu / script / caminho.sh
- Para executar um script a cada hora:
0 * * * * / seu / script / caminho.sh
- Para executar um script a cada meia-noite:
0 0 * * * / seu / script / caminho.sh
- Para executar um script a cada 23 minutos após meia-noite, 2h e 4h todos os dias:
23 0-23 / 2 * * * / seu / script / caminho.sh
- Para executar um script em 4.05 todos os domingos.
5 4 * * sun / your / script / path.sh
- Para executar um script às 22h durante a semana.
0 22 * * 1-5 / seu / script / caminho.sh
- Para executar um script em 1º de dezembro - meia-noite.
0 0 0 12 * / seu / script / caminho.sh
- Para executar um script no sábado à meia-noite.
0 0 * * 6 / seu / script / caminho.sh
- Para executar um script a cada hora.
0 * * * * / seu / script / caminho.sh
- Para executar um script a cada minuto:
Com esses exemplos básicos, você obterá uma compreensão mais profunda da sequência e como ela pode ser modificada.
Limitando o acesso do Cron
Vemos que os cron jobs podem ser muito úteis, especialmente quando você deseja automatizar suas tarefas. No entanto, também pode ser arriscado se o sistema permitir que qualquer usuário crie um cron job. Mesmo que não afete os dados pessoais, alguns cron jobs podem consumir uma boa quantidade de recursos do sistema, atrasando o PC. Para evitar tais cenários, o administrador do sistema (usuário root) pode criar um / etc / cron.permitir
ou / etc / cron.negar
o arquivo que contém apenas usuários que podem 'criar / não criar' um cron job.
O / etc / cron.permitir
o arquivo contém usuários que podem criar, editar, exibir ou remover arquivos crontab. Se este arquivo não existir, todos os usuários podem criar e gerenciar tarefas cron, exceto aquelas no / etc / cron.negar
Arquivo. Se nenhum desses arquivos estiver presente, os privilégios de superusuário são necessários para executar o comando crontab.
Agora que você evitou que usuários não-root criassem tarefas cron, se já tivessem alguma, você pode considerar a adição de suas tarefas cron no arquivo crontab root. Mas aqui está um quebra-cabeça - ao adicionar seus cron jobs ao crontab root, isso não executa seus cron jobs como root? Bem, aqui vem a importância do campo USERNAME que discutimos acima na sintaxe do comando cron. Por exemplo, o comando abaixo:
0 * * * * fosslinux / caminho / para / script.sh
Será executado como trabalho cron "fosslinux" do usuário e não como usuário root.
Conclusão
Agora você tem um guia claro sobre o uso de tarefas Cron para automatizar várias tarefas em seu sistema. Isso não deve confundi-lo com aplicativos de inicialização. Use os exemplos acima para tentar automatizar scripts simples. Com o tempo, você pode combinar caracteres especiais e curingas para realizar tarefas muito mais mundanas. Se você está apenas começando, seria ótimo ler nosso post sobre o tutorial de script bash com exemplos que o ajudarão a criar seu primeiro script.