11.3. Configurando o cron(8)

Contribuído por Tom Rhodes.

Um dos utilitários mais úteis no FreeBSD é o cron. Este utilitário é executado em segundo plano e verifica regularmente o /etc/crontab para que as tarefas sejam executadas e procura /var/cron/tabs para arquivos crontab personalizados. Estes arquivos são usados para planejar tarefas que o cron executa nos horários especificados. Cada entrada em um crontab define uma tarefa para ser executada e é conhecida como uma tarefa do cron.

Dois tipos diferentes de arquivos de configuração são usados: o crontab do sistema, que não deve ser modificado, e crontabs de usuário, que podem ser criados e editados conforme necessário. O formato usado por esses arquivos está documentado em crontab(5). O formato do sistema crontab, /etc/crontab inclui uma coluna who que não existe nos crontabs de usuário. No crontab do sistema , o cron executa o comando como o usuário especificado nesta coluna. Em um crontab de usuário, todos os comandos são executados como o usuário que criou o crontab.

Os crontabs de usuário permitem que usuários individuais programem suas próprias tarefas. O usuário root também pode ter um crontab de usuário que pode ser usado para agendar tarefas que não existem no crontab do sistema .

Aqui está uma entrada de amostra do crontab do sistema, /etc/crontab:

# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD$
# 1
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin 2
#
#minute	hour	mday	month	wday	who	command 3
#
*/5	*	*	*	*	root	/usr/libexec/atrun 4

1

Linhas que começam com o caractere # são comentários. Um comentário pode ser colocado no arquivo como um lembrete do que uma ação faz e do porque a sua execução é desejada. Comentários não podem estar na mesma linha que um comando ou então serão interpretados como parte do comando; eles devem estar em uma nova linha. Linhas em branco são ignoradas.

2

O caractere igual (=) é usado para definir qualquer configuração de ambiente. Neste exemplo, ele é usado para definir o SHELL e o PATH. Se o SHELL for omitido, o cron usará o shell Bourne padrão. Se o PATH for omitido, o caminho completo deverá ser fornecido ao comando ou script a ser executado.

3

Esta linha define os sete campos usados em um crontab do sistema: minute, hora, mday, month, wday, who e command. O campo minute é o tempo em minutos quando o comando especificado será executado, a hour é a hora em que o comando especificado será executado, o mday é o dia do mês, month é o mês e wday é o dia da semana. Estes campos devem ser valores numéricos, representando o relógio de vinte e quatro horas, ou um *, representando todos os valores desse campo. O campo who existe somente no crontab do sistema e especifica com qual usuário o comando deve ser executado. O último campo é o comando a ser executado.

4

Esta entrada define os valores para este trabalho do cron. O */5, seguido por vários outros caracteres *, especifica que /usr/libexec/atrun é invocado pelo root a cada cinco minutos de cada hora, de cada dia e dia da semana, de cada mês.

Comandos podem incluir qualquer número de opções. No entanto, os comandos que se estendem a várias linhas precisam ser quebrados com o caractere de continuação da barra invertida \.

11.3.1. Criando um Crontab de Usuário

Para criar um crontab de usuário, invoque o crontab no modo editor:

% crontab -e

Isto irá abrir o crontab do usuário usando o editor de texto padrão. A primeira vez que um usuário executa este comando, ele abre um arquivo vazio. Depois que um usuário cria um crontab, esse comando abrirá este arquivo para edição.

É útil adicionar estas linhas a parte superior do arquivo crontab para configurar as variáveis de ambiente e lembrar os significados dos campos no crontab:

SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# Order of crontab fields
# minute	hour	mday	month	wday	command

Em seguida, adicione uma linha para cada comando ou script a ser executado, especificando o horário para executar o comando. Este exemplo executa o script de shell Bourne personalizado especificado todos os dias às duas da tarde. Como o caminho para o script não está especificado em PATH, o caminho completo para o script é fornecido:

0	14	*	*	*	/usr/home/dru/bin/mycustomscript.sh

Dica:

Antes de usar um script personalizado, verifique se ele é executável e teste-o com o conjunto limitado de variáveis de ambiente definidas pelo cron. Para replicar o ambiente que seria usado para executar a entrada do cron acima, use:

env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/dru LOGNAME=dru /usr/home/dru/bin/mycustomscript.sh

O ambiente definido pelo cron é discutido em crontab(5). Verificar se os scripts operam corretamente em um ambiente cron é especialmente importante se incluírem quaisquer comandos que excluam arquivos usando curingas.

Quando terminar de editar o crontab, salve o arquivo. Ele será instalado automaticamente e o cron lerá o crontab e executará seus cron jobs nos horários especificados. Para listar as tarefas agendadas em um crontab, use este comando:

% crontab -l
0	14	*	*	*	/usr/home/dru/bin/mycustomscript.sh

Para remover todas as tarefas cron em um crontab de usuário:

% crontab -r
remove crontab for dru? y

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.