Comando crontab

Propósito

Submete, edita, lista ou remove trabalhos de cron.

Sintaxe

crontab [ -e [ UserName ] | -l [ UserName ] | -r [ UserName ] | -v [ UserName ] | Arquivo ]

Descrição

O comando crontab envia, edita, lista ou remove jobs cron. Um trabalho cron é um comando executado pelo daemon cron em intervalos regulares programados. Para enviar um trabalho cron, especifique o comando crontab com a sinalização -e . O comando crontab invoca uma sessão de edição que permite que você crie um arquivo crontab . Você cria entradas para cada trabalho de cron neste arquivo. Cada entrada deve estar em um formulário aceitável para o daemon cron . Para obter informações sobre criação de entradas, consulte The crontab File Entry Format.

Ao terminar de criar entradas e sair do arquivo, o comando crontab a copia no diretório /var/spool/cron/crontabs e coloca-o em um arquivo nomeado para seu nome de usuário atual. Se um arquivo com o seu nome já existir no diretório cronguias , o comando crontab sobrescreve-o.

Alternativamente, você pode criar um arquivo crontab especificando o parâmetro File . Se o arquivo existir, ele deve estar no formato que o daemon cron espera. Se o arquivo não existir, o comando crontab invoca o editor. Se a variável de ambiente EDITOR existir, o comando invoca o editor que especifica. Caso contrário, o comando crontab usa o editor vi .

Para listar o conteúdo do seu arquivo crontab , especifique o comando crontab com a sinalização -l . Para remover um arquivo existente, use a sinalização -r .

O parâmetro UserName opcional pode ser usado pelo proprietário do arquivo crontab ou pelo usuário raiz para editar, listar ou remover ou verificar o status das tarefas cron para o usuário especificado. Se o UserName for inválido, uma mensagem de erro será gerada e o programa sairá.

Se o parâmetro UserName opcional não for especificado, os sinalizadores crontab estarão disponíveis para o usuário raiz e o usuário atual.

Segurança

Somente o usuário raiz ou o proprietário do arquivo crontab pode usar UserName seguindo as sinalizações -e, -l, -re -v para editar, listar, remover ou verificar o arquivo crontab do usuário especificado.

O cron Daemon

O daemon cron executa comandos de acordo com as entradas de arquivo crontab . A menos que você redirecionar a saída de um trabalho cron para saída padrão ou erro, o daemon cron mails você qualquer saída de comando ou erros. Se você especificar um job cron incorretamente em seu arquivo crontab , o daemon cron não executa o job.

O daemon cron examina os arquivos crontab apenas quando o daemon cron é inicializado. Quando você faz alterações em seu arquivo crontab usando o comando crontab , uma mensagem indicando a mudança é enviada para o daemon cron . Isso elimina a sobrecarga de verificação de arquivos novos ou alterados a intervalos regulares.

Controles sobre o Uso do Comando do crontab

Os arquivos /var/adm/cron/cron.allow e /var/adm/cron/cron.deny controlam os quais os usuários podem usar o comando crontab . Um usuário root pode criar, editar ou excluir esses arquivos. Entradas nesses arquivos são nomes de login do usuário com um nome a uma linha. Se o seu ID de login estiver associado a mais de um nome de login, o comando crontab usa o primeiro nome de login que está no arquivo /etc/passwd , independentemente de qual nome de login você poderá realmente estar usando. Além disso, para permitir que os usuários iniciem trabalhos cron , o atributo daemon no arquivo /etc/security/user deve ser configurado como TRUE, usando o comando chuser .

A seguir, um exemplo de um arquivo cron.allow :

root
nick
dee
sarah

Se o arquivo cron.allow existir, somente usuários cujos nomes de login aparecem nele poderão usar o comando crontab . O nome do log do usuário raiz deverá aparecer no arquivo cron.allow se o arquivo existir. Um administrador do sistema pode parar explicitamente um usuário de usar o comando crontab , listando o nome de login do usuário no arquivo cron.deny Se apenas o arquivo cron.deny existir, qualquer usuário cujo nome não apareça no arquivo poderá usar o comando crontab .

Um usuário não pode usar o comando crontab se um dos seguintes for true:

  • O arquivo cron.allow e o arquivo cron.deny não existem (permite somente usuário raiz).
  • O arquivo cron.allow existe mas o nome de login do usuário não está listado nele.
  • O arquivo cron.deny existe e o nome de login do usuário está listado nele

Se nem o cron.allow nem o arquivo cron.deny existirem, apenas alguém com autoridade de usuário raiz poderá enviar uma tarefa com o comando crontab .

O Formato de Entrada de Arquivos do crontab

Um arquivo crontab contém entradas para cada job cron. As entradas são separadas por caracteres de nova linha. Cada entrada de arquivo crontab contém seis campos separados por espaços ou guias na forma a seguir:

 
minute  hour  day_of_month  month  weekday  command

Esses campos aceitam os seguintes valores:

Item Descrição
minuto 0 até 59
hora 0 até 23
dia_do_mês 1 até 31
mês 1 até 12
semana de semana 0 até 6 para domingo a sábado
comando um comando shell

Você deve especificar um valor para cada campo. Exceto para o campo comando , esses campos podem conter o seguinte:

  • Um número na faixa especificada. Para executar um comando em maio, especifique 5 no campo mês .
  • Dois números separados por um traço para indicar uma faixa inclusiva. Para executar um trabalho cron na terça-feira até sexta-feira, coloque 2-5 no campo weekday .
  • Uma lista de números separados por vírgulas. Para executar um comando no primeiro e último dia de janeiro, você especificaria 1,31 no campo day_of_month .
  • Uma combinação de dois números separados por um traço para indicar uma faixa inclusiva e uma lista de números separados por vírgulas pode ser usada em conjunto. Para executar um comando no primeiro, décimo a décimo sexto e último dia de janeiro, você especificaria 1,10-16, 31 no campo day_of_month. Os dois pontos acima também podem ser usados em combinação.
  • An * (asterisco), significando todos os valores permitidos. Para executar um trabalho a cada hora, especifique um asterisco no campo hora.
Nota: Qualquer caractere precedido por uma barra invernada (incluindo o%) faz com que esse caractere seja tratado literalmente. A especificação dos dias pode ser feita por dois campos (dia do mês e dia da semana). Se você especificar ambos como uma lista de elementos, ambos são aderidos. Por exemplo, a entrada a seguir:
0 0 1,15 * 1 command

iria comandar o comando no primeiro e décimo quinto dias de cada mês, assim como toda segunda-feira. Para especificar dias por apenas um campo, o outro campo deverá conter um * .

Especificando Comandos

O daemon cron executa o comando nomeado no sexto campo na data e hora selecionados. Se você incluir um% (sinal de percentual) no sexto campo, o daemon cron trata tudo o que precede como a chamada de comandos e faz tudo o que a segue disponível para entrada padrão, a menos que você escape do sinal de percentual (\ %). As linhas em branco e linhas cujo primeiro caractere não em branco é o sinal de número (#) serão ignorados. Se os argumentos para o comando tiverem uma barra inverter ('\'), a barra invernada deverá ser precedida por outra barra invernada.

Nota: O shell executa apenas a primeira linha do campo de comando. Todas as outras linhas são disponibilinadas para o comando como entrada padrão.

O daemon cron inicia um subshell a partir do seu diretório HOME . Se você programar um comando para executar quando não estiver logado e deseja que comandos em seu arquivo .profile seja executado, o comando deverá ler explicitamente o seu arquivo .profile .

O daemon cron fornece um ambiente padrão para cada shell, definindo HOME, LOGNAME, SHELL (=/usr/bin/sh), e PATH (=/usr/bin).

Eventos de Auditoria

Se o subsistema de auditoria estiver devidamente configurado e estiver ativado, o comando crontab gera o seguinte registro de auditoria (evento) toda vez que o comando for executado:

Evento Informações
CRON_JobRemove Lista quais usuários removeram um arquivo crontab e quando.
CRON_JobAdd Lista quais usuários editaram um arquivo crontab e quando.

Atenção aos usuários do RBAC: Este comando pode realizar operações privilegiadas. Somente usuários privilegiados podem executar essas operações. Para obter mais informações sobre autorizações e privilégios, consulte Banco de Dados de Comandos Privilegiados em Segurança. Para obter uma lista de privilégios e as autorizações associadas a esse comando, consulte o comando lssecattr ou o subcomando getcmdattr.

Sinalizações

Item Descrição
-e UserName Edita uma cópia do arquivo crontab do usuário ou cria um arquivo vazio para editar se o arquivo crontab não existir para um UserNameválido. Quando a edição é completa, o arquivo é copiado no diretório crontab como o arquivo crontab do usuário.
-l UserName Lista o arquivo crontab do usuário.
-r UserName Remove o arquivo crontab do usuário a partir do diretório crontab .
-v UserName Lista o status dos empregos de cron do usuário.

Status de saída

Esse comando retorna os valores de saída a seguir:

Item Descrição
0 Conclusão bem-sucedida.
>0 Ocorreu um erro.

Exemplos

  1. Para copiar um arquivo chamadomycronjobspara o diretório /var/spool/cron/crontabs , digite o seguinte:
    crontab mycronjobs
    O arquivo será copiado como:
    /var/spool/cron/crontabs/<username>
    onde <username> é o seu nome de usuário atual.
  2. Para escrever o tempo para o console a cada hora na hora, digite:
    0 * * * * echo The hour is `date` . 
    >/dev/console
  3. Para executar o comando calendar às 6:30 a.m. todas as segundas-feiras, quarta-feira e sexta-feira, entram:
    30 6 * * 1,3,5 /usr/bin/calendar
  4. Para executar o comando calendar todos os dias do ano às 6:30, digite o seguinte:
    30 6 * * * /usr/bin/calendar
  5. Para executar um script chamadomaintenancetodos os dias à meia-noite de agosto, digite o seguinte:
    0 0 * 8 * /u/harry/bin/maintenance
  6. Para definir texto para a entrada padrão para um comando, digite:
    0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to 
    turn in your time card.
    O texto seguindo o % (sinal de percentual) define a entrada padrão para o comando wall como:
    HAPPY HOLIDAY!
     
    Remember to turn in your time card.

Arquivos

Item Descrição
/var/adm/cron/FIFO Um cano nomeado que envia mensagens para o daemon cron quando novos jobs são submetidos com o comando crontab ou at .
/var/spool/cron/crontabs Especifica a área do spool crontab.
/var/adm/cron/cron.allow Especifica uma lista de usuários permitida o acesso ao comando crontab .
/var/adm/cron/cron.deny Especifica uma lista de usuários negou acesso ao comando crontab .