Crontab no Linux – com exemplos e ferramentas em tempo real

Vamos explorar o crontab, seus comandos e várias operações associadas ao Crontab.

Aprenderemos como agendar tarefas usando o utilitário cron e, por último, também discutiremos algumas das ferramentas online que nos ajudam a formatar e testar os comandos cron.

últimas postagens

Origem

Crontab significa “tabela cron”. A palavra cron foi tirada da palavra grega Chronos que significa tempo. O Crontab é um processo daemon do sistema que executará automaticamente algumas tarefas e trabalhos de acordo com o horário agendado.

  Como excluir volumes LVM do Linux

Casos de uso

O Crontab é útil para realizar várias operações, como manipulação de backup automatizado, rotação de arquivos de log, sincronização de arquivos entre máquinas remotas e limpeza de pastas temporárias, etc. O Crontab pode ser usado para qualquer tipo de trabalho, mas se torna especialmente útil quando começamos a lidar com tipo de trabalho de administração do sistema.

Usando o cron, um administrador pode agendar um trabalho para ser executado em um horário e dia específicos.

Então vamos ver como podemos configurar isso.

Sintaxe do Crontab

Para executar uma lista de comandos, o utilitário cron lê os arquivos de configuração. Para interpretar as linhas nas tabelas de configuração do crontab, segue uma sintaxe do Crontab. O Crontab possui seis campos, e os primeiros cinco (1-5) campos definem a data e hora de execução. O último campo, ou seja, 6º campo, pode ser um nome de usuário e/ou tarefa /job/command/script a ser executado.

* * * * * USER_NAME COMMAND/SCRIPT-TO-EXECUTE

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ Dia da semana (0 – 6) (0 é domingo, ou use nomes)
│ │ │ |____________ Mês (1 – 12),* significa todos os meses
│ │ |______________ Dia do mês (1 – 31),* significa todos os dias
│ |________________ Hora (0 – 23),* significa a cada hora
|___________________ Minuto (0 – 59), * significa cada minuto

Notas:

  • Asterisco
  • é usado para corresponder a todos os valores possíveis para um campo. Por exemplo, um asterisco usado no campo hora seria equivalente a todas as horas ou um asterisco no campo mês seria equivalente a todos os meses.

nome de usuário é opcional (disponível apenas se for o arquivo crontab do sistema)

Exemplos:

Vamos entender a sintaxe acima com alguns exemplos

0 5 * * * /scripts/job.sh

1. Agende um cron para ser executado às 5h diariamente

0 6,18 * * * /scripts/job.sh

2. Agende um cron para ser executado duas vezes por dia às 6h e às 18h

* * * * * /scripts/job.sh

3. Agende um cron para ser executado a cada minuto

0 19 * * mon /scripts/job.sh

4. Agende um cron para ser executado toda segunda-feira às 19h.

*/10 * * * * /scripts/job.sh

5. Agende um cron para ser executado a cada 15 minutos.

* * * feb,jun,oct * /script/job.sh

6. Agende um cron para ser executado nos meses selecionados

25 7 4 3 * /home/script/backup.sh

7. Execute o script de shell /home/script/backup.sh em 4 de março às 7h25

8. Agende um cron para ser executado a cada 30 segundos

  • Como não temos controle sobre segundos no Crontab, podemos alcançá-lo através do processo de duas etapas abaixo.
* * * * * /home/scripts/script.sh
  • Vamos primeiro agendar uma tarefa que é executada a cada minuto.
* * * * * sleep 30; /home/scripts/script.sh

Agora vamos usar o comando sleep para pausar a execução por 30 segundos.

  Como instalar o Telegram no Linux

A tarefa acima interromperá a execução por 30 segundos e será retomada novamente.

Tipo de arquivos de configuração Cron

Existem dois tipos de arquivos de configuração Cron:

O sistema UNIX/Linux Crontab

Isso requer privilégios de root porque geralmente é usado para serviços do sistema e trabalhos críticos. O sexto campo (na descrição da sintaxe acima) é o nome de um usuário para o comando a ser executado. Ele permite que o crontab do sistema execute comandos como qualquer usuário.

O usuário Crontab

Um usuário também pode instalar seus próprios cron jobs usando o comando crontab. Aqui também, o sexto campo (na descrição da sintaxe acima) é o comando a ser executado, e todos os comandos são executados como o usuário que criou o crontab. Cada usuário pode ter seu próprio arquivo crontab e, embora sejam arquivos em /var/spool/cron/crontabs, eles não devem ser editados diretamente. Precisamos usar o comando crontab para editar ou configurar nossos próprios cron jobs.

Como funciona? O serviço cron (daemon) é executado em segundo plano e verifica constantemente (a cada minuto) o arquivo /etc/crontab e os diretórios /etc/cron.*/. Ele também verifica o diretório /var/spool/cron/. Os comandos são executados por cron

quando os campos de minuto, hora e mês correspondem à hora atual e pelo menos um dos campos de dois dias (dia do mês ou dia da semana) corresponde ao dia atual.

Comandos básicos

Listando os Cron Jobs existentes

crontab -l

Podemos listar todos os trabalhos Cron sem abrir o arquivo de configuração crontab usando o comando abaixo

[[email protected] ~]# crontab -l
no crontab for etechpt.com
[[email protected] ~]#

Se não houver nenhum trabalho existente, ele retornará a saída como

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Se o usuário já adicionou alguns dos trabalhos, ele será exibido da seguinte forma.

A tabela cron é específica do usuário, o que significa que você deve estar logado com um usuário específico para ver a lista da tabela cron.

Listar Cron para um usuário específico

Para listar os trabalhos agendados de outro usuário, use a opção -u (Usuário) e -l (Lista).

crontab -u outro_usuário -l

  Como usar o comando less no Linux

Exemplo: crontab -u etechpt.com -l

Adicionar/modificar entradas do Crontab

Para editar a entrada crontab, podemos usar a opção -e conforme mostrado abaixo.

crontab -e

O comando acima abrirá os editores vi onde você especifica os detalhes do trabalho e salva o arquivo. Uma vez salvo, você pode verificar se o cron está configurado ou não com crontab -l.

Adicionar/modificar entradas do Crontab para um usuário específico

crontab -u another_username -e

Podemos editar o crontab para outro usuário usando o comando abaixo

Exemplo: crontab -u etechpt.com -e

Remover entrada do Crontab

Use o parâmetro -r com o Crontab para remover tarefas agendadas completas sem confirmação do crontab

crontab -r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete etechpt.com's crontab?

Se você deseja confirmação antes de excluir trabalhos agendados, use a opção -i com -r, que solicitará a confirmação do usuário antes de excluir o crontab do usuário.

Corda Especial Crontab

Além da sintaxe acima discutida, também podemos usar oito strings especiais fornecidas pelo Crontab. Isso não apenas economizará nosso tempo, mas também melhorará a legibilidade.
Cadeia Especial
Descrição
@reinício
Execute uma vez, após a inicialização.
@anual
Executar uma vez por ano, ou seja, 0 0 1 1 *
@anualmente
O mesmo que @anual
@por mês
Executar uma vez por mês, ou seja, 0 0 1 * *
@semanalmente
Executar uma vez por semana, ou seja, 0 0 * * 0
@diário
Executar uma vez por dia, ou seja, 0 0 * * *
@meia-noite
Igual ao @diário
@hourly

Executar uma vez por hora, ou seja, 0 * * * *

Exemplos de Strings Especiais do Crontab

1. Crontab para agendar tarefas anualmente

@anual /scripts/greeting.sh

Podemos executar acima de um para enviar uma saudação de ano novo, ele será executado no primeiro minuto de cada ano.

2. Crontab para agendar tarefas a serem executadas mensalmente.

@mensal /scripts/cleanup.sh

Podemos executar o acima para realizar algumas atividades de limpeza no início de cada mês.

Da mesma forma, podemos usar outra string especial do Crontab para fins semanais, diários e horários.

Diretório Cron

  • O administrador do sistema pode usar um agendamento cron para todo o sistema que vem sob o diretório cron predefinido como mostrado abaixo
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly

/etc/cron.weekly

Exemplos em tempo real do Crontab

Vamos discutir alguns dos exemplos em tempo real que um administrador de sistema ou profissionais de TI costumam usar.

Excluir arquivos e diretórios vazios

45 0 * * * etechpt.com find /tmp -type f -empty -delete

A expressão cron acima encontrará os arquivos e diretórios vazios do diretório /tmp e os excluirá. Este trabalho será executado diariamente às 12h45. Precisamos mencionar o nome de usuário para realizar este trabalho. No exemplo acima, o usuário etechpt.com está executando uma operação de tarefa cron.

Execute várias tarefas usando um único cron

* * * * * /home/scripts/backup.sh; /home/scripts/scriptp.sh

Múltiplas tarefas/trabalhos podem ser separados usando um ponto e vírgula(;) e podem ser atribuídos a uma única expressão cron.

Ferramentas de formatação e teste Cron

Até agora discutimos os comandos e a sintaxe do crontab para agendar uma tarefa. Mas e se você não for um administrador de sistema e seu trabalho não for configurar o Cron regularmente, pode não ser possível lembrar a sintaxe e isso abre espaço para erros. Não se preocupe, temos uma solução para este problema.

Existem várias ferramentas de formatação Cron disponíveis online.

# 1. Gerador de tarefas cron Gerador de tarefas cron

é uma GUI muito amigável onde você pode especificar o minuto, os dias e o caminho do script para gerar o crontab.

Vamos dar um exemplo em tempo real onde eu tenho que executar /home/processMonitor.sh a cada 5 minutos de segunda a sexta.

Então, eu tenho a sintaxe do Cron abaixo, que posso colocar no meu crontab executando
crontab -e

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron Easycron

é um agendador de tarefas cron baseado na web útil. Podemos criar um cron job especificando uma URL para chamar, podemos definir a hora em que ele deve ser executado. Também podemos especificar uma expressão cron ou adicioná-la manualmente a partir de um formulário descritivo. É importante ressaltar que, opcionalmente, podemos usar a autenticação HTTP básica para uma pequena camada de segurança.

Não apenas isso, mas o Easycron também pode ser usado para alcançar outros propósitos, como expressão Cron padrão, logs de execução de tarefas Cron, notificação por e-mail, logs de falhas separados, etc.

# 3. Gerador Crontab Gerador Crontab

é outra ferramenta útil para gerar crontab e com esta ferramenta, você também pode adicionar se deseja salvar a saída do cron no arquivo ou enviá-lo para o email.

# 4. Crontab Guru Crontab Guru

é um simples editor de expressão de agendamento cron online. Além disso, ele fornece um meio útil de monitorar seu cronjob. Tudo o que precisamos fazer é copiar um comando fornecido e anexar no final da definição do crontab. Caso o cron job falhe ou nem inicie, você receberá um e-mail de alerta.

No exemplo abaixo, o Job será executado às 04:05, todos os dias, todos os meses e todas as semanas.

# 5. Testador CRON Testador CRON

nos permite testar as definições de data/hora do cron. Pode haver uma situação em que tenhamos que decodificar a sintaxe cron existente para solucionar problemas ou apenas querer fazer um teste.

Para isso, podemos usar esta ferramenta. Tudo o que precisamos fazer é copiar e colar nossa expressão cron no campo de definição do cron, depois escolher o número de iterações e clicar em Testar para ver as várias datas em que ela será executada.

Vamos verificar uma de nossas expressões cron 4 3 */2 * *que deve ser executada às 03:04(AM) a cada dois dias. Vamos verificá-lo com o testador cron.

Conclusão Espero que o acima ajude você a entender melhor o Crontab e configurar tarefas cron. Agendar trabalhos por meio do Cron é uma das muitas tarefas executadas pelo Linux Admin. Se você estiver interessado em aprender as habilidades avançadas, confira estecurso

.