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.
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.
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
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.
.