Base de conhecimento ServCloud

Adicionando tarefas ao cron no Linux ou UNIX

O Cron permite que usuários de Linux e Unix executem comandos ou scripts em uma determinada data e hora. Você pode agendar scripts para serem executados periodicamente. Cron é uma das ferramentas mais úteis em sistemas operacionais Linux ou UNIX. Geralmente é usado para tarefas de administrador de sistemas, como backups ou limpeza / tmp / diretórios e muito mais. O serviço cron (daemon) é executado em segundo plano e verifica constantemente o /etc/crontabarquivo, e /etc/cron.*/diretórios. Ele também verifica o /var/spool/cron/diretório.

Como usar o comando crontab para cron jobs

 

Você precisa usar o comando crontab para editar / criar, instalar, desinstalar ou listar os cron jobs no Vixie Cron. 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. Você precisa usar o comando crontab para editar ou configurar seus próprios cron jobs.

Tipos de arquivos de configuração cron

Existem diferentes tipos de arquivos de configuração:

  1. O crontab do sistema UNIX / Linux : normalmente, usado por serviços do sistema e tarefas críticas que requerem privilégios de root. O sexto campo (veja abaixo a descrição do campo) é o nome de um usuário para o qual o comando será executado. Isso dá ao crontab do sistema a capacidade de executar comandos como qualquer usuário.

  2. The user crontabs: User can install their own cron jobs using the crontab command. The sixth field is the command to run, and all commands run as the user who created the crontab

 

Como instalo, crio ou edito meus próprios cron jobs?

Para editar ou criar seu próprio arquivo crontab, digite o seguinte comando no prompt do shell UNIX / Linux:
$ crontab -e

Devo reiniciar o cron após alterar o arquivo crontable?

Não. O Cron examinará o tempo de modificação em todos os crontabs e recarregará aqueles que foram alterados. Portanto, o cron não precisa ser reiniciado sempre que um arquivo crontab é modificado.

Sintaxe do crontab (descrição do campo)

A sintaxe é:

1 2 3 4 5 / caminho / para / comando arg1 arg2

OU

1 2 3 4 5 /root/backup.sh

Where,

  • 1: Minuto (0-59)

  • 2: Horas (0-23)

  • 3: Dia (0-31)

  • 4: Mês (0-12 [12 == dezembro])

  • 5: Dia da semana (0-7 [7 ou 0 == domingo])

  • / caminho / para / comando - Script ou nome do comando para agendar

Formato fácil de lembrar:

* * * * * comando a ser executado - - - - - | | | | | | | | | ----- Dia da semana (0 - 7) (domingo = 0 ou 7) | | | ------- Mês (1 - 12) | | --------- Dia do mês (1 - 31) | ----------- Hora (0 - 23) ------------- Minuto (0 - 59)

Seu cron job é o seguinte para jobs do sistema :

OU

Exemplo: execute o script do cron job de backup

Se você deseja que um script denominado /root/backup.sh seja executado todos os dias às 3 da manhã, sua entrada no crontab será semelhante à seguinte. Primeiro, instale seu cronjob executando o seguinte comando:
# crontab -e
Anexe a seguinte entrada:
0 3 * * * /root/backup.sh
Salve e feche o arquivo.

Mais exemplos

Para executar / path / to / command cinco minutos depois da meia-noite, todos os dias, digite:
5 0 * * * /path/to/command
Execute /path/to/script.sh às 14h15 do primeiro dia de cada mês, digite:
15 14 1 * * /path/to/script.sh
Execute /scripts/phpscript.php às 22h nos dias de semana, digite:
0 22 * * 1-5 /scripts/phpscript.php
Execute /root/scripts/perl/perlscript.pl 23 minutos após a meia-noite, 2h, 4h ..., todos os dias, digite:
23 0-23/2 * * * /root/scripts/perl/perlscript.pl

 

Como faço para usar as operadoras?

Um operador permite que você especifique vários valores em um campo. Existem três operadores:

  1. O asterisco ( *) : Este operador especifica todos os valores possíveis para um campo. Por exemplo, um asterisco no campo hora hora seria equivalente a cada hora ou um asterisco no campo mês seria equivalente a cada mês.

  2. A vírgula ( ,) : Este operador especifica uma lista de valores, por exemplo: “1,5,10,15,20,25”.

  3. O traço ( -) : Este operador especifica um intervalo de valores, por exemplo: “5-15” dias, que equivale a digitar “5,6,7,8,9,…., 13,14,15” usando o operador vírgula.

  4. O separador (/) : este operador especifica um valor de etapa, por exemplo: “0-23 /” pode ser usado no campo de horas para especificar a execução do comando a cada duas horas. Etapas também são permitidas após um asterisco, portanto, se quiser dizer a cada duas horas, use * / 2.

Como desativo a saída de e-mail?

Por padrão, a saída de um comando ou script (se houver) será enviado por e-mail para sua conta de e-mail local. Para parar de receber a saída de e-mail do crontab, você precisa adicionar> / dev / null 2> & 1. Por exemplo:
0 3 * * * /root/backup.sh >/dev/null 2>&1
Para enviar a saída para uma conta de e-mail específica, digamos suport@servcloud.com.br, você precisa definir a variável MAILTO da seguinte maneira:
MAILTO="suport@servcloud.com.br"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Consulte “ Desativar o alerta de email por comando Crontab ” para obter mais informações.

Tarefa: Liste todos os seus cron jobs

Digite o seguinte comando:
# crontab -l
# crontab -u username -l
Para remover ou apagar todos os trabalhos crontab, use o seguinte comando:
# Delete the current cron jobs #
crontab -r

## Excluir trabalho para usuário específico. Deve ser executado como usuário root ##
crontab -r -u nome de usuário

Use string especial para economizar tempo

Em vez dos primeiros cinco campos, você pode usar qualquer uma das oito strings especiais. Isso não apenas economizará seu tempo, mas também aumentará a legibilidade.

Corda especial

Significado

@reinício

Execute uma vez, na inicialização.

@anual

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

@anualmente

(igual a @yearly)

@por mês

Execute uma vez por mês, “0 0 1 * *”.

@semanalmente

Execute uma vez por semana, “0 0 * * 0”.

@Diário

Execute uma vez por dia, “0 0 * * *”.

@meia-noite

(igual a @daily)

@hourly

Execute uma vez por hora, “0 * * * *”.

Exemplos

Execute o comando ntpdate a cada hora:
@hourly /path/to/ntpdate

Faça um backup todos os dias:
@daily /path/to/backup/script.sh

Mais sobre o arquivo / etc / crontab e os diretórios /etc/cron.d/*

/ etc / crontab é um arquivo crontabs do sistema. Normalmente usado apenas pelo usuário root ou daemons para configurar trabalhos de todo o sistema. Todos os usuários individuais devem usar o comando crontab para instalar e editar seus trabalhos conforme descrito acima. / var / spool / cron / ou / var / cron / tabs / é o diretório para arquivos crontab do usuário pessoal. Deve ser feito backup com o diretório inicial dos usuários.

Noções básicas sobre / etc / crontab padrão

Entradas típicas do arquivo / etc / crontab:

Primeiro, o ambiente deve ser definido. Se a linha do shell for omitida, o cron usará o padrão, que é sh. Se a variável PATH for omitida, nenhum padrão será usado e os locais dos arquivos precisarão ser absolutos. Se HOME for omitido, o cron usará o diretório inicial dos usuários de chamada.

Além disso, o cron lê os arquivos no diretório /etc/cron.d/. Normalmente, o daemon do sistema, como sa-update ou sysstat, coloca seu cronjob aqui. Como usuário root ou superusuário, você pode usar os seguintes diretórios para configurar tarefas cron. Você pode soltar seus scripts diretamente aqui. O comando run-parts executa scripts ou programas em um diretório por meio do arquivo / etc / crontab:

Diretório

Descrição

/etc/cron.d/

Coloque todos os scripts aqui e chame-os do arquivo / etc / crontab.

/etc/cron.daily/

Execute todos os scripts uma vez por dia

/etc/cron.hourly/

Execute todos os scripts uma vez por hora

/etc/cron.monthly/

Execute todos os scripts uma vez por mês

/etc/cron.weekly/

Execute todos os scripts uma vez por semana

Como faço para usar os diretórios acima para colocar meus próprios scripts ou trabalhos?

Aqui está um script de shell de amostra chamado clean.cache. Este script é criado para limpar arquivos em cache a cada 10 dias. Este script é criado diretamente no diretório /etc/cron.daliy/. Em outras palavras, crie um arquivo de texto chamado /etc/cron.daily/clean.cache como segue.

Salve e feche o arquivo. Defina as permissões:
# chmod +x /etc/cron.daily/clean.cache

 

Como faço backup das entradas de cron jobs instaladas?

Basta digitar o seguinte comando para fazer backup de seus cronjobs em um servidor NAS montado no diretório /nas01/backup/cron/users.root.bakup:
# crontab -l > /nas01/backup/cron/users.root.bakup
# crontab -u userName -l > /nas01/backup/cron/users.userName.bakup

Arquivo de registro de tarefas crond e cron

Você pode usar o comando cat / grep command / tail command para visualizar o arquivo de log crond. Por exemplo, em um CentOS 7, o Linux pode usar os seguintes comandos:
cat /var/log/cron
tail -f /var/log/cron
grep "my-script.sh"
tail -f /var/log/cron

Descubra se os trabalhos de backup diário estão em execução ou não no servidor FreeBSD Unix:
$ sudo grep '/usr/local/bin/rsnapshot daily' /var/log/cron

Na moderna, distribuição Linux pode-se usar o comando systemctl ou o comando journalctl:
sudo systemctl status cron
sudo journalctl -u cron
sudo journalctl -u cron | grep backup-script.sh

Conclusão

Você viu nesse artigo sobre cron, cron jobs e crontab, e como usá-los em sistemas semelhantes ao Linux e Unix.

 

Sobre cron, cron jobs e crontab, qualquer dúvida ou dificuldade, entre em contato com nossa equipe através de nossos canais de atendimento

Aprenda junto com a nossa equipe