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:
Valor entre 0 e 59
Valor entre 0 e 23
Valor entre 0 e 31
Valor entre 1 e 12 (identificando os meses de Janeiro a Dezembro)
Valor entre 0 e 7 (identificando os dias de Domingo a Sábado). Note que tanto 0 e 7 equivalem a Domingo.
O usuário especificado será usado para executar o comando (o usuário deverá existir).
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