cron - daemon para executar comandos agendados (Vixie Cron)
SINTAXE
cron [-f] [-l] [-L loglevel] [-n fqdn] [-x debugflags]
cron [-N]
DESCRIÇÃO
cron é invocado diretamente por systemd(1) ao entrar em níveis de execução multiusuário.
OPÇÕES
-f
Permanecer no modo em primeiro plano, não executar como daemon.
-l
Habilitar nomes compatíveis com LSB para arquivos em /etc/cron.d. Esta configuração, no entanto, não afeta a análise de arquivos em /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly ou /etc/cron.monthly.
-n fqdn
Incluir o FQDN no assunto ao enviar e-mails. Por padrão, cron abrevia o nome do host.
-N
Executar os trabalhos do cron agora, imediatamente e sair. Esta opção é útil para realizar testes.
-L loglevel
Diga a cron o que registrar sobre os trabalhos (erros são registrados, independentemente deste valor) como a soma dos seguintes valores:
1 irá registrar o início de todos os trabalhos do cron
2 irá registrar o fim de todos os trabalhos do cron
4 irá registrar todos os trabalhos com falha (status de saída != 0)
8 irá registrar o número do processo de todos os trabalhos do cron
O padrão é registrar o início de todos os trabalhos (1). O registro será desativado se o nível de registro for definido como zero (0). Um valor de quinze (15) selecionará todas as opções.
-x debugflags
Diga a cron para ser mais detalhado e gerar informações de depuração; debugflags é a soma desses valores:
1 "ext": ...
2 "sch": ...
4 "proc": ...
8 "pars": ...
16 "load": ..
32 "misc": ...
64 "test": ...
128 "bit": ...
NOTAS
cron pesquisa sua área de spool (/var/spool/cron/crontabs/) em busca de arquivos crontab (que são nomeados após as contas em /etc/passwd); os crontabs encontrados são carregados na memória. Observe que os crontabs neste diretório não devem ser acessados diretamente - o comando [crontab]({filename}../../crontab)(1) deve ser usado para acessá-los e atualizá-los.
cron também lê /etc/crontab, que está em um formato ligeiramente diferente (consulte crontab(5)). No Debian, o conteúdo de /etc/crontab é predefinido para executar programas em /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly. Esta configuração é específica do Debian, veja a nota abaixo em DEBIAN ESPECÍFICO.
Além disso, no Debian, cron lê os arquivos no diretório /etc/cron.d. cron trata os arquivos em /etc/cron.d da mesma forma que o arquivo /etc/crontab (eles seguem o formato especial desse arquivo, ou seja, eles incluem o campo de usuário). No entanto, eles são independentes de /etc/crontab: eles não herdam, por exemplo, as configurações de variáveis de ambiente dele. Esta alteração é específica do Debian, veja a nota abaixo em DEBIAN ESPECÍFICO.
Como /etc/crontab, os arquivos no diretório /etc/cron.d são monitorados para alterações. O administrador do sistema pode criar trabalhos cron em /etc/cron.d/ com nomes de arquivo como "local" ou "local-foo".
/etc/crontab e os arquivos em /etc/cron.d devem ser de propriedade do usuário root e não devem ser graváveis pelo grupo ou por outros usuários. Em contraste com a área de spool, os arquivos em /etc/cron.d ou os arquivos em /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly também podem ser links simbólicos, desde que tanto o link simbólico quanto o arquivo para o qual ele aponta sejam de propriedade do usuário root. Os arquivos em /etc/cron.d não precisam ser executáveis, enquanto os arquivos em /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly precisam ser, pois são executados por run-parts (veja run-parts(8) para mais informações).
O cron é ativado a cada minuto, examinando todos os arquivos crontab armazenados, verificando cada comando para ver se ele deve ser executado no minuto atual. Ao executar comandos, qualquer saída é enviada por e-mail para o proprietário do crontab (ou para o usuário especificado na variável de ambiente MAILTO no crontab, se existir) a partir do proprietário do crontab (ou do endereço de e-mail fornecido na variável de ambiente MAILFROM no crontab, se existir). As cópias dos processos cron que executam esses comandos têm seus nomes convertidos para maiúsculas, como pode ser visto no syslog e na saída do [ps]({filename}../../ps)(1).
Além disso, o cron verifica a cada minuto se o tempo de modificação do diretório de spool (ou o tempo de modificação do arquivo /etc/crontab) foi alterado e, se sim, o cron examinará o tempo de modificação de todos os arquivos crontab e recarregará aqueles que foram alterados. Assim, o cron não precisa ser reiniciado sempre que um arquivo crontab for modificado. Observe que o comando [crontab]({filename}../../crontab)(1) atualiza o tempo de modificação do diretório de spool sempre que um arquivo crontab for alterado.
Considerações especiais existem quando o relógio é alterado em menos de 3 horas, por exemplo, no início e no fim do horário de verão. Se o tempo avançou, os trabalhos que deveriam ter sido executados no tempo que foi ignorado serão executados logo após a alteração. Por outro lado, se o tempo recuou em menos de 3 horas, os trabalhos que caem no período repetido não serão executados novamente.
Apenas os trabalhos que são executados em um determinado horário (não especificados como @hourly, nem com '\*' no especificador de hora ou minuto) são afetados. Os trabalhos que são especificados com curingas são executados com base no novo horário imediatamente.
Alterações de relógio de mais de 3 horas são consideradas correções do relógio, e o novo horário é usado imediatamente.
O cron registra suas ações no subsistema syslog 'cron', e o registro pode ser controlado usando o subsistema padrão syslogd(8).
AMBIENTE
Se configurado em /etc/default/cron em sistemas Debian, as configurações de localização do daemon cron podem ser gerenciadas por meio do uso de /etc/environment ou por meio do uso de /etc/default/locale, com os valores do último substituindo os valores do primeiro. Esses arquivos são lidos e são usados para configurar as variáveis de ambiente LANG, LC_ALL e LC_CTYPE. Essas variáveis são então usadas para definir o conjunto de caracteres dos e-mails, que por padrão é 'C'.
Isso NÃO afeta o ambiente das tarefas executadas sob o cron. Para obter mais informações sobre como modificar o ambiente das tarefas, consulte crontab(5).
O daemon usará, se presente, a definição de /etc/localtime para o fuso horário.
O ambiente pode ser redefinido nas definições do crontab do usuário, mas o cron só lidará com tarefas em um único fuso horário.
ESPECÍFICO DO DEBIAN
O Debian introduz algumas alterações no cron que não estavam originalmente disponíveis no projeto original. As mudanças mais significativas introduzidas são:
Suporte para /etc/cron.{hourly,daily,weekly,monthly} via /etc/crontab,
Suporte para /etc/cron.d (diretório para arquivos de configuração de pacotes do cron),
Suporte PAM,
Suporte SELinux,
Suporte auditlog,
DST e outras alterações/correções relacionadas ao tempo,
SGID crontab(1) em vez de SUID root,
Locais e comandos específicos do Debian,
Configuração específica do Debian (/etc/default/cron),
várias outras pequenas funcionalidades e correções.
O suporte para /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly é fornecido no Debian por meio da configuração padrão do arquivo /etc/crontab (veja o exemplo de escopo do sistema em crontab(5)). O crontab de escopo do sistema padrão contém quatro tarefas: executar a cada hora, a cada dia, a cada semana e a cada mês. Cada uma dessas tarefas executará run-parts(8), fornecendo cada um desses diretórios como um argumento. Essas tarefas são desativadas se o anacron(8) estiver instalado (exceto para a tarefa horária) para evitar conflitos entre os dois daemons.
Conforme descrito acima, os arquivos nesses diretórios devem passar por algumas verificações de sanidade, incluindo as seguintes: ser executável, pertencer ao root, não ser gravável pelo grupo ou outros e, se forem links simbólicos, apontar para arquivos pertencentes ao root. Além disso, os nomes dos arquivos devem estar em conformidade com os requisitos de nomes de arquivos do run-parts(8): devem ser compostos inteiramente por letras, dígitos e podem conter apenas os sinais especiais sublinhado ('_') e hífen ('-'). Qualquer arquivo que não esteja em conformidade com esses requisitos não será executado pelo run-parts(8). Por exemplo, qualquer arquivo que contenha pontos será ignorado. Isso é feito para evitar que o cron execute quaisquer arquivos que o sistema de gerenciamento de pacotes do Debian deixe em /etc/cron.d/ como arquivos de configuração (ou seja, arquivos terminados em .dpkg-dist, .dpkg-orig, .dpkg-old e .dpkg-new).
Este recurso pode ser usado por administradores de sistema e pacotes para incluir tarefas que serão executadas em intervalos definidos. Os arquivos criados por pacotes nesses diretórios devem ser nomeados após o pacote que os fornece.
O suporte para /etc/cron.d está incluído no próprio daemon cron, que trata este local como o spool do crontab de escopo do sistema. Este diretório pode conter qualquer arquivo definindo tarefas seguindo o formato usado em /etc/crontab, ou seja, ao contrário do spool do cron do usuário, esses arquivos devem fornecer o nome de usuário para executar a tarefa na definição da tarefa.
Os arquivos neste diretório devem ser de propriedade do usuário root, não precisam ser executáveis (são arquivos de configuração, assim como /etc/crontab) e devem estar em conformidade com a mesma convenção de nomenclatura usada por run-parts(8): devem consistir apenas de letras maiúsculas e minúsculas, dígitos, sublinhados e hífens. Isso significa que eles não podem conter pontos. Se a opção -l for especificada para cron (esta opção pode ser configurada por meio de /etc/default/cron, veja abaixo), então eles devem estar em conformidade com a especificação do namespace LSB, exatamente como na opção --lsbsysinit em runparts(8).
O objetivo pretendido desse recurso é permitir que pacotes que exigem um controle mais fino de sua programação do que os diretórios /etc/cron.{hourly,daily,weekly,monthly} adicionem um arquivo crontab a /etc/cron.d. Esses arquivos devem ser nomeados após o pacote que os fornece.
Além disso, a configuração padrão do cron é controlada por /etc/default/cron, que é lido pelo script init.d que inicia o daemon cron. Este arquivo determina se o cron lerá as variáveis de ambiente do sistema e torna possível adicionar opções adicionais ao programa cron antes que ele seja executado, seja para configurar seu registro ou para definir como ele tratará os arquivos em /etc/cron.d.
VEJA TAMBÉM
crontab(1), crontab(5), run-parts(8)
AUTORES
Paul Vixie <_> Escreveu esta página de manual (1994).
Steve Greenland <_> Manteve o pacote (1996-2005).
Javier Fernández-Sanguino Peña <_> Manteve o pacote (2005-2014).
Christian Kastner <_> Manteve o pacote (2010-2016).
Georges Khaznadar <_> Manteve o pacote (2022-2024).
DIREITOS AUTORAIS
Copyright © 1994 Paul Vixie
Distribuir livremente, exceto: não remova meu nome da fonte ou documentação (não se aproprie do meu trabalho), marque suas alterações (não me culpe por seus possíveis bugs), não altere ou remova este aviso. Pode ser vendido se o código-fonte compilável for fornecido ao comprador. Nenhuma garantia de qualquer tipo, expressa ou implícita, está incluída neste software; use por sua conta e risco, a responsabilidade por quaisquer danos a qualquer pessoa resultantes do uso deste software é de total responsabilidade do usuário.
Desde 1994, muitas modificações foram feitas nesta página de manual, feitas por desenvolvedores Debian que mantêm o cron(TM); acima está uma lista curta, mais informações podem ser encontradas no arquivo /usr/share/doc/cron/copyright.