Um guia para iniciantes no uso de Crron para agendar tarefas no Linux

Cron é um agendador poderoso que permite agendar e executar scripts ou comandos regularmente. É uma pulsação que mantém vários programas e scripts personalizados cronometrados. Você pode agendar scripts para serem executados no arquivo crontab. Embora esse arquivo possa ser intimidante durante uma estreia, é fácil de entender com um pouco de prática.

Em algumas distribuições do Linux, como Arch Linux, o cron não é instalado por padrão, pois usa o systemd como alternativa ao cron. Além disso, existem muitas implementações de implementação de cron, e cada uma tem sua própria maneira de editar / programar tarefas cron. Neste tutorial, vamos nos concentrar no cronie, que é o padrão na maioria das distribuições Linux, como o Ubuntu.

Imagem do guia para iniciantes no uso do Cron para agendar tarefas no Linux | cron-schedule-task-featured-DzTechs

Ver entradas para cron

mostrar crontab Ele permite que você visualize as tarefas agendadas que serão executadas em sua conta.

crontab -l
Imagem do guia para iniciantes no uso do Cron para agendar tarefas no Linux | cron-tab-list-DzTechs

Você também pode ver as tarefas agendadas para uma conta root usando sudo.

sudo crontab -l

Editando entradas cron

Se você nunca configurou um cron job, exibir este arquivo exibirá um arquivo vazio ou um com comentários. Para adicionar uma entrada, você precisará abrir o arquivo crontab com a opção -e.

crontab -e

As inscrições seguirão crontab Sempre a mesma arquitetura, permitindo que você inspecione entradas em qualquer dispositivo e também as crie programaticamente.

A estrutura básica para definir uma entrada crontab é:

m h d mon dow command

m = Minutos entre 0 e 59

h = Hora entre 0 e 23

d = Dia do mês entre 1 e 31

seg = Um mês entre 1 e 12

Dow = Dia da semana entre 0 e 6. Zero no domingo.

Command = Executar comando.

Por exemplo, você precisa executar um comando regularmente para verificar se o servidor mysql está funcionando bem ou não. Para fazer o comando ser executado a cada hora, use a seguinte sintaxe:

0 * * * * mysqlcheck --all-databases --check-only-changed --silent

Isso significa que ele será executado no pip a cada hora. Se você só quisesse executá-lo às 1.42hXNUMX diariamente, o comando seria:

42 1 * * * mysqlcheck --all-databases --check-only-changed --silent

Além disso, os separadores podem ser usados ​​para vários objetos (como 1) e os hifens podem ser usados ​​para intervalos. O uso especial de um asterisco no lugar de um elemento na expressão indica qual elemento reproduzir para todos os valores de campo. (Um asterisco aparecerá no campo Relógio para ser executado a cada 3-5 horas.) A hashtag (#) na linha indica um comentário (o que significa que a linha de código não será executada).

Finalmente, a barra indicará um valor de etapa. Por exemplo, a cada cinco minutos será inserido como * / 5 (a partir do momento em que o crontab é salvo e o cron job criado). Se você usar apenas "5", a entrada será executada apenas na marca de cinco minutos.

Por exemplo, este:

34 3 * * 0 mysqlcheck --all-databases --check-only-changed --silent

34Minutos de operação: entre 0 e 59

3Tempo: entre 0 e 23

*As duas estrelas do meio denotam todos os dias (1 a 31) e todos os meses (1 a 12)

0: O zero final refere-se ao domingo

Esta tarefa será executada às 3h34 todos os meses, todas as semanas aos domingos.

Códigos curtos

Permitir você crontab Usando alguns códigos curtos para tornar suas entradas cron mais fáceis de ler.

@reboot - Executar uma vez, na inicialização

@anual - Execute uma vez por ano, “0 0 1 1 *”.

@anualmente - Como anualmente

@por mês - Executar uma vez por mês, “0 0 * 1 *”

@semanal - Executar uma vez por semana, “0 0 * * 0”

@diariamente - Ele corria uma vez por dia, “0 0 * * *”

@ Midnight - o mesmo dia

@hourly - É executado uma vez a cada hora, "0 * * * *"

Por exemplo:

@hourly mysqlcheck --all-databases --check-only-changed --silent

Editar entradas cron como outro usuário

Há momentos em que você precisa adicionar cartões crontab. Por exemplo, para renovar automaticamente um certificado Let is Encrypt SSL, você precisa executar o script de renovação com raiz. Para editar os cartões crontab, basta adicionar sudo na frente do comando:

sudo crontab -e

Da mesma forma, você pode agendar o cron job como outro usuário, usando o sinal -u:

sudo crontab -u username -e

Por exemplo, para executar o cron job como o usuário “www-data”, use o seguinte comando:

sudo crontab -u www-data -e

Avaliação da atividade de Crohn

Embora agora você esteja pronto para executar comandos ou scripts específicos, você pode querer ter certeza de que eles são executados. O cron embutido é que assim que o comando for executado, ele enviará um e-mail para o dono do cron. Isso pode ser alterado com a variável "MAILTO".

Imagem do guia para iniciantes no uso do Cron para agendar tarefas no Linux | cron-mailto-variável-DzTechs

Adição MAILTO=yourmail@yourdomain.com Você enviará todos os relatórios importantes cron Para um email especificado. Este parâmetro pode ser encontrado no topo da tela de edição do crontab. Porém, se não estiver presente, você pode adicionar a variável e ela funcionará conforme o esperado.

Vários endereços de e-mail podem ser separados por vírgula. Se precisar de um comando diferente por e-mail em outro lugar, você pode adicionar o comando MAILTO diretamente acima do pedido. Os pedidos serão enviados depois disso mailto Para o novo endereço. Se você sair MAILTO = vazio , As notificações serão enviadas ao proprietário da entrada cron.

Como alternativa, você pode usar o operador de redirecionamento (>) para enviar a saída quando precisar dela.

34 3 * * 0 mysqlcheck --all-databases --check-only-changed --silent > /dev/null

O acima irá redirecionar a saída para “/ dev / null”, que não envia nenhum e-mail e ignora a saída.

Se você deseja ter certeza de que uma tarefa está sendo executada e não deseja enviar e-mail, você também pode verificar os logs do cron. Na maioria dos sistemas, acessar registros cron exigirá permissões de superusuário. O registro do cron pode ser encontrado em “/ var / log”. O arquivo cron ou syslog exibirá um log das entradas cron executadas.

sudo grep crontab syslog
Imagem do guia para iniciantes no uso do Cron para agendar tarefas no Linux | cron-tab-log-DzTechs

O Cron pode ser ainda mais restrito para permitir o uso específico e as configurações padrão podem ser definidas. Com a adição de piping e re-roteamento, as entradas cron podem ser configuradas para fazer todos os tipos de coisas. Em última análise, cron é uma ferramenta que lhe dá o poder de executar tarefas em seu tempo livre e garantir a manutenção de rotina de peças de seu sistema de acordo com seu acordo.

Ir para o botão superior