O cron é um daemon que permite o agendamento da execução de um comando/programa para um determinado dia/mês/ano/hora. É muito usado em tarefas de arquivamento de logs, checagem da integridade do sistema e execução de programas/comandos em horários determinados.
As tarefas são definidas no arquivo /etc/crontab
e por
arquivos individuais de usuários em
/var/spool/cron/crontabs/[usuário]
(criados através do
programa crontab). Adicionalmente a distribuição
Debian utiliza os arquivos no diretório
/etc/cron.d
como uma extensão para o
/etc/crontab
.
Para agendar uma nova tarefa, basta editar o arquivo
/etc/crontab
com qualquer editor de texto (como o
ae e o vi) e
definir o mês/dia/hora que a
tarefa será executada. Não é necessário reiniciar o daemon do
cron porque ele verifica seus arquivos a cada minuto.
Veja
a seção “O
formato de um arquivo crontab” para entender o formato de arquivo
cron usado no agendamento de tarefas.
O arquivo /etc/crontab
tem o seguinte formato:
52 18 1 * * root run-parts --report /etc/cron.montly | | | | | | | | | | | | | \_Comando que será executado | | | | | | | | | | | \_ UID que executará o comando | | | | | | | | | \_ Dia da semana (0-7) | | | | | | | \_ Mês (1-12) | | | | | \_ Dia do Mês (1-31) | | | \_ Hora | \_ Minuto
Onde:
- Minuto
-
Valor entre 0 e 59
- Hora
-
Valor entre 0 e 23
- Dia do Mês
-
Valor entre 0 e 31
- Mês
-
Valor entre 1 e 12 (identificando os meses de Janeiro a Dezembro)
- Dia da Semana
-
Valor entre 0 e 7 (identificando os dias de Domingo a Sábado). Note que tanto 0 e 7 equivalem a Domingo.
- usuário
-
O usuário especificado será usado para executar o comando (o usuário deverá existir).
- comando
-
Comando que será executado. Podem ser usados parâmetros normais usados na linha de comando.
Os campos do arquivo são separados por um ou mais espaços ou tabulações. Um
asterisco *
pode ser usado nos campos de data e hora para
especificar todo o intervalo disponível. O hífen -
serve
para especificar períodos de execução (incluindo a o número inicial/final). A
vírgula serve para especificar lista de números. Passos podem ser
especificados através de uma /
. Veja os exemplos no final
desta seção.
O arquivo gerado em /var/spool/cron/crontabs/[usuário]
pelo crontab tem o mesmo formato do
/etc/crontab
exceto por não possuir o campo
usuário (UID)
, pois o nome do arquivo já identifica o
usuário no sistema.
Para editar um arquivo de usuário em
/var/spool/cron/crontabs
ao invés de editar o
/etc/crontab
use crontab -e
, para
listar as tarefas daquele usuário crontab -l
e para apagar o
arquivo de tarefas do usuário crontab -r
(adicionalmente
você pode remover somente uma tarefa através do crontab -e
e
apagando a linha correspondente).
OBS: Não esqueça de incluir uma linha em branco no final do arquivo, caso contrário o último comando não será executado.
O cron define o valor de algumas variáveis
automaticamente
durante sua execução; a variável SHELL
é definida como
/bin/sh
, PATH
como
/usr/bin:/bin
, LOGNAME
,
MAILTO
e HOME
são definidas através
do arquivo /etc/passwd
. Os valores padrões destas
variáveis podem ser substituídos especificando um novo valor nos arquivos do
cron.
Exemplos de um arquivo /etc/crontab
:
SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin 00 10 * * * root sync # Executa o comando sync todo o dia as 10:00 00 06 * * 1 root updatedb # Executa o comando updatedb toda segunda-feira as 06:00. 10,20,40 * * * * root runq # Executa o comando runq todos os dias e a toda a hora em 10, 20 e 40 minutos. */10 * * * * root fetchmail # Executa o comando fetchmail de 10 em 10 minutos todos os dias 15 0 25 12 * root echo "Feliz Natal"|mail john # Envia um e-mail as 0:15 todo o dia 25/12 para john desejando um feliz natal. 30 5 * * 1-6 root poff # Executa o comando poff automaticamente as 5:30 de segunda-feira a sábado.
Copyright © 1999-2020 - Gleydson Mazioli da Silva