\section{crontab}
\index{crontab}
\subsubsection{NOME }
crontab - tabelas para controle do cron  \subsubsection{DESCRIÇÃO }
Um arquivo \textit{crontab} 
contém instruções para o daemon \textit{\textsf{cron}(8)}, na forma: ``execute este comando 
nesta hora e nesta data''. Cada usuário tem seu próprio crontab, e comandos 
em um dado crontab são executados como se fosse pelo usuário que possui 
o crontab. Uucp e News normalmente têm seus próprios crontabs, eliminando 
a  necessidade de executar \textit{\textsf{su}(1)} explicitamente como parte de um comando 
do cron. 

Linhas em branco, espaços iniciais e tabs são ignorados.  Linhas 
cujo primeiro caractere não-branco for um `\#' são comentários, e são ignoradas. 
 Note que comentários não podem estar na mesma linha que comandos do cron, 
já que serão considerados parte do comando. Analogamente, comentários não 
podem estar na mesma linha que definições de variáveis de ambiente. 

Uma 
linha ativa em um crontab é ou uma definição de ambiente ou um comando 
do cron.  Uma definição de ambiente é da forma 

    nome = valor 

onde os 
espaços em torno do sinal de igual (=) são opcionais, e quaisquer espaços 
não iniciais em \textit{valor} são parte do valor atribuído a \textit{nome}. A string \textit{valor} 
pode ser colocada entre aspas (simples ou duplas, mas correspondentes) 
para preservar espaços iniciais ou finais. 

Várias variáveis de ambiente 
são definidas automaticamente pelo daemon \textit{\textsf{cron}(8)}. SHELL é definido como 
/bin/sh, LOGNAME e HOME são definidos a partir da linha de /etc/passwd 
referente ao dono do crontab. HOME e SHELL podem ser sobrescritos; LOGNAME 
não. 

(Outra observação: a variável LOGNAME às vezes é chamada USER em sistemas 
BSD... nesses sistemas, USER será definido também.) 

Além de LOGNAME, HOME, 
e SHELL, \textit{\textsf{cron}(8)} olha em MAILTO se tiver algum motivo para enviar mail 
como resultado da execução de comandos neste crontab.  Se MAILTO for definida 
(e não vazia), o mail é enviado para o usuário designado.  Se MAILTO for 
definida mas vazia (MAILTO=""), não é enviado nenhum mail.  Caso contrário, 
o mail é enviado ao dono do crontab.  Esta opção é útil se você decidir 
que o mailer será /bin/mail ao invés de /usr/lib/sendmail quando instalar 
cron -- /bin/mail não faz aliasing, e UUCP normalmente não lê seu mail. 

O 
formato de um comando do cron é em grande parte o padrão V7, com várias 
extensões upward-compatible.  Cada linha tem cinco campos de hora e data, 
seguidos por um nome de usuário se este arquivo crontab for o do sistema, 
seguidos por um comando.  Comandos são executados pelo \textit{\textsf{cron}(8)} quando os 
campos minuto, hora, e mês correspondem à hora atual, \textit{e} quando pelo menos 
um dos campos de dia (dia do mês, ou dia da semana) correspondem ao dia 
atual (veja ``Observação'' abaixo). O \textit{\textsf{cron}(8)} examina as entradas cron a cada 
minuto. Os campos de hora e data são: 

\begin{table}[ht]
\caption{Campos de data e hora do cron}
\begin{center}
\begin{tabular}{ll}
\hline
campo         & valores permitidos \\ 
minuto        & 0-59  \\
hora          & 0-23   \\ 
dia do mês    & 0-31    \\
mês	          & 0-12 (ou nomes, veja abaixo)    \\
dia da semana & 0-7 (0 ou 7 é domingo, ou use nomes)    \\
\hline
\end{tabular}
\end{center}
\end{table}


Um campo pode ser um asterisco (*), 
que sempre significa ``primeiro-último''. 

Pode-se usar intervalos de números. 
 Um intervalo é um par de números separados por um hífen.  O intervalo 
especificado é inclusivo.  Por exemplo, 8-11 em uma entrada ``horas'' especifica 
execução às 8, 9, 10 e 11 horas. 

Pode-se usar listas.  Uma lista é um conjunto 
de números (ou intervalos) separados por vírgulas.  Exemplos: ``1,2,5,9'', 
``0-4,8-12''. 

Valores de passo podem ser usados em conjunto com intervalos. Um 
``/$<$número$>$'' imediatamente após um intervalo especifica um passo no valor do 
número através do intervalo.  Por exemplo, ``0-23/2'' pode ser usado no campo 
das horas para especificar que o comando deve ser executado a cada duas 
horas (a alternativa no padrão V7 seria ``0,2,4,6,8,10,12,14,16,18,20,22''). 
 Passos também são permitidos depois de um asterisco.  Logo, se você quer 
dizer ``a cada duas horas'', simplesmente use ``*/2''. 

Nomes (em inglês) também 
podem ser usados nos campos ``mês'' e ``dia da semana''.  Use as primeiras três 
letras do dia ou mês desejado (em maiúsculas ou minúsculas, não importa). 
 Intervalos ou listas de nomes não são permitidos. 

O campo ``sexto'' (o resto 
da linha) especifica o comando a ser executado.   Toda a parte da linha 
correspondente ao comando, até um fim-de-linha ou um caractere `\%', será executada 
por /bin/sh ou pelo shell especificado na variável SHELL do arquivo cron. 
Símbolos de porcentagem (\%) no comando, a menos que precedidos por uma 
barra invertida ($\backslash$), são transformados em caracteres fim-de-linha, e todos 
os dados após o primeiro `\%' são enviados ao comando como entrada padrão. 
 

Observação: o dia de execução de um comando pode ser especificado por 
dois campos -- dia do mês e dia da semana.  Se ambos os campos são restritos 
(i.e., diferentes de `*'), o comando será executado quando  \textit{qualquer dos dois} 
campos corresponder à data atual.  Por exemplo,  

``30 4 1,15 * 5'' faria com 
que o comando fosse executado às 4:30 nos dias 1 e 15 de cada mês, e em 
todas as sextas-feiras.  \subsubsection{EXEMPLO DE ARQUIVO CRON }


 \# usa /bin/sh para executar 
comandos, independentemente do que /etc/passwd diz. 

 SHELL=/bin/sh 

 \# envia 
(por mail) toda saída para `paul', independentemente de quem 

 \# é o dono 
do crontab. 

 MAILTO=paul 

 \# 

 \# executa a 0h05, todo dia. 

 5 0 * * *     
  \$HOME/bin/daily.job $>$$>$ \$HOME/tmp/out 2$>$\&1 

 \# executa às 14h15 no dia primeiro 
de cada mês -- a saída é enviada para paul 

 15 14 1 * *     \$HOME/bin/monthly 


 \# executa às 22h00 em dias de semana. 

 0 22 * * 1-5	mail -s "São 22 horas" 
joe\%Joe,\%\%Where are your kids?\% 

 23 0-23/2 * * * echo "executa a 0h23, 
2h23, 4h23 ..., todo dia" 

 5 4 * * sun     echo "executa às 4h05 todo domingo" 


  \subsubsection{VEJA TAMBÉM }
\textsf{cron(8)}, \textsf{crontab(1)}  \subsubsection{EXTENSÕES }
Na especificação do dia da 
semana, tanto dia 0 como dia 7 são considerados domingo.  BSD e ATT parecem 
discordar nesse ponto. 

Listas e intervalos podem coexistir no mesmo campo. 
 "1-3,7-9" seria rejeitado pelo cron da ATT ou do BSD -- eles só aceitam "1-3" 
ou "7,8,9". 

Intervalos podem incluir "passos", logo "1-9/2" é o mesmo que 
"1,3,5,7,9". 

Meses ou dias da semana podem ser especificados pelo nome 
(em inglês). 

Variáveis de ambiente podem ser definidas no crontab.  No BSD 
ou ATT, o ambiente dado aos processos filhos é basicamente o de /etc/rc. 


A saída dos comandos pode ser enviada por mail ao dono do crontab  (BSD 
não faz isso), pode ser enviada a outra pessoa que não o dono do crontab 
(SysV não faz isso), e este recurso pode ser desligado de modo que nenhum 
mail seja enviado (SysV não faz isso tampouco).  \subsubsection{AUTOR }
Paul Vixie $<$paul@vix.com$>$ 

