Como configurar trabalhos de cron no Linux

Como configurar trabalhos de cron no Linux
Automatando e agendando tarefas repetidas nos desktops e servidores melhora a produtividade e reduz a intervenção e o monitoramento manuais. Numerosas ferramentas estão disponíveis para o Linux e uma das mais amplamente usadas entre elas é "Cron".

Este artigo explicará tarefas de agendamento e scripts em execução em intervalos regulares usando trabalhos Cron.

O que é Cron?

Cron é um programa de agendamento de tarefas que é executado em segundo plano como um processo. Ele pode ser usado para executar periodicamente certos trabalhos que são agendados usando seu conjunto predefinido de regras. Cron vem pré -instalado na maioria das distribuições Linux ou disponível nos repositórios a serem instalados manualmente.

Predefinições de Cron

Cron no Ubuntu vem com um conjunto de agendadores predefinidos. Você pode verificá -los executando o comando abaixo:

$ ls /etc /cron.*

Geralmente essas pastas são “/etc/cron.horário ”,“/etc/cron.diariamente ","/etc/cron.mensalmente ”e“/etc/cron.semanalmente".

Basta colocar os scripts desejados em uma dessas pastas para executar tarefas automatizadas de hora em hora, diariamente, mensalmente ou semanalmente.

Observe que Cron usa shell "/bin/sh" por padrão. Se você quiser usar "/bin/bash" como shell em scripts cron, você deve usar "!#/bin/bash ”Hashbang na parte superior do arquivo de script ou defina shell como“ shell =/bin/bash ”na primeira linha em um script de bash programado. A variável de ambiente “shell” substituta também funciona para o editor de Crontab explicado abaixo.

Nem todas as variáveis ​​do ambiente do sistema podem ser expostas aos trabalhos de Cron. Portanto, geralmente é uma boa ideia definir manualmente variáveis ​​de ambiente importantes em um script agendado por Cron.

Crontab

Crontab permite que você defina suas próprias tarefas agendadas. Você pode usá -lo para configurar os cronogramas CRON DIFERENTES DOS QUATRO.

Para definir uma tarefa programada em Crontab, inicie primeiro o editor Crontab usando o comando abaixo:

$ CRONTAB -E

Agora, no final do arquivo, você pode adicionar uma entrada no seguinte formato:

Minuto de hora do dia da semana durante a semana/Full/Path/to/script.sh

Onde:

  • Minuto: Qualquer valor no intervalo de 0 a 59
  • Hora: qualquer valor no intervalo de 0 a 23, 0 sendo meia -noite
  • Dia: Qualquer valor no intervalo 1 a 31
  • mês: qualquer valor no intervalo 1 a 12
  • Dia da semana: qualquer valor no intervalo de 0 a 6, 0 sendo domingo

A entrada de Crontab abaixo terá uma captura de tela da sua área de trabalho e a armazenará em seu diretório doméstico uma vez às 15:13 horas em 2 de março, mais todas as terças -feiras em março às 15:13 horas.

13 15 2 3 2 Scrot

Para listar todas as entradas de Crontab, use o comando abaixo:

$ CRONTAB -L

Mais exemplos

As tarefas de Cron podem ser melhor explicadas por meio de exemplos, portanto, abaixo estão alguns exemplos que tiram capturas de tela periodicamente da sua área de trabalho e os armazenam na pasta doméstica.

Além das cinco variáveis ​​de agendamento, Cron também usa alguma string especial para agendar trabalhos. Essas cordas são:

  • @Hourly: O trabalho é executado a cada hora
  • @Daily / @midnight: O trabalho é executado todos os dias
  • @Weekly: Job funciona uma vez por semana
  • @Monthly: Job funciona uma vez por mês
  • @yearly / @anualmente: o trabalho funciona uma vez por ano
  • @Reboot: o trabalho é executado uma vez a cada reinicialização / login

A entrada de Crontab abaixo terá a captura de tela uma vez em cada reinicialização:

@Reboot Scrot

Você pode substituir "@reboot" por qualquer outra seqüência especial mencionada acima.

O uso de um asterisco ou curinga no lugar de qualquer uma das cinco variáveis ​​repetirá o trabalho em todas as novas instâncias dessa variável. A entrada abaixo terá uma captura de tela a cada minuto:

* * * * * Scrot

Toda hora:

0 * * * * escroto

Todos os dias às 18:00 horas:

0 18 * * * escroto

Todo mês no dia 6 às 18:00 horas:

0 18 6 * * escroto

Use "/" para executar um script em um intervalo periódico fixo de 30 minutos (executa a cada 30 minutos):

*/30 * * * * escroto

Você pode usar variáveis ​​separadas por vírgula para definir a execução repetida do script em intervalos regulares. O exemplo abaixo terá uma captura de tela da sua área de trabalho a cada 1º, 4º e 5º minuto de uma nova hora.

1,4,5 * * * * escroto

Verificando as entradas de Crontab

Definir entradas de Crontab pode ser complicado, mas depurar ou verificar se eles funcionam no Timestamps corretos é ainda mais complicado. Uma opção é usar uma máquina virtual e registrar registros de data e hora de um script executando periodicamente em um trabalho de cron, incluindo algo como "data" e redirecionando a saída para um arquivo de texto. No entanto, uma solução melhor é usar um dos inúmeros serviços de teste de empregos cron online disponíveis na web. Eu recomendo dar um site do Cron Tester disponível aqui uma tentativa.

Conclusão

Executar o Cron Jobs é uma excelente maneira de automatizar tarefas repetidas, especialmente em servidores. A ferramenta é extremamente poderosa e personalizável. No entanto, é importante verificar que sua definição de agendador funciona corretamente, especialmente se houver tarefas de missão crítica.