Quando o cron.daily é executado?

199

Quando as entradas em cron.daily(e .weeklye .hourly) são executadas e são configuráveis?

Não encontrei uma resposta definitiva para isso e espero que exista uma.

Estou executando o RHEL5 e o CentOS 4, mas para outras distribuições / plataformas também seria ótimo.

Warren
fonte
2
No NetBSD , os horários dos cronjobs diários, semanais e mensais são definidos no crontab do root.
HD1
Essa pergunta seria mais útil se a pergunta fosse editada para ser mais genérica. No mínimo, torne a pergunta genérica para qualquer versão do redhat, centos distros, em vez de apenas para as versões 4 e 5 (que não são amplamente usadas e são " fim de produção " (semelhante ao fim da vida útil ).
Trevor Boyd Smith
@TrevorBoydSmith - essa pergunta foi feita há quase 8 anos. Sinta-se à vontade para solicitar uma atualização para versões mais recentes. Mas RHEL 6 nem sequer existia em abril de 2010: access.redhat.com/articles/3078#RHEL6
Warren
@warren minha intenção não é criticar, mas apenas melhorar a pergunta e o fluxo de pilha em geral. (i compreender que RHEL 6 não existia quando a pergunta foi feita porque a questão tem soo muitos upvotes agora seria bom tê-lo mais genérico..)
Trevor Boyd Smith
@TrevorBoydSmith .. já existe uma resposta para o CentOS / RHEL 6 :) ... ficaria feliz em aprovar boas edições suas se você tiver algumas idéias. Vá em frente e faça edições sugeridas na pergunta em que você pensou
warren

Respostas:

151

Para as distribuições mencionadas:

No CentOS 5.4 (deve ser o mesmo para RHEL5)

grep run-parts /etc/crontab

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Então cron.daily é executado às 04:02.

Mesmo no CentOS 4.8

Richard Holloway
fonte
1
Existe alguma razão por trás disso? Só posso supor que seria o momento mais silencioso do servidor.
O Pixel desenvolvedor
@ que horas é executado no ubuntu? você pode dizer como eu posso verificá-lo? Eu não sou capaz de entender a saída do comando
Narendra Jaggi
@NarendraJaggi o comando "run-parts" significa "execute tudo nesta pasta". As pastas cron.daily etc. funcionam porque existe um trabalho cron para executar partes de execução nesses diretórios. Portanto, grep run-parts /etc/crontabbasta encontrar as instruções sobre quando as partes de execução são chamadas para cada um desses diretórios.
Jordan Reiter
2
Esta não é mais uma resposta válida para o CentOS 6 ou superior, role para baixo para obter mais.
Lzap # 24/16
74

Na página do manual:

 Cron also searches for /etc/anacrontab

/etc/anacrontab no meu sistema (Fedora 12):

1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

Veja também man anacrontab

leonbloy
fonte
6
Este é o caso com CentOS 6. Obrigado.
Mbrownnyc
3
Isso significa 5 da manhã a cada "1" dia? Desculpe, mas isso não responde nada.
elysch 13/05
3
@elysch Deixe-me repetir a última linha da minha resposta: Ver também "homem anacrontab"
leonbloy
2
Boa explicação do anacron aqui . Basicamente, o anacron não tem horário de início fixo , mas iniciará o processo com base em quando o último processo foi executado, com um atraso especificado. Se a máquina estiver desligada quando o processo deveria ter sido executado , ela será iniciada quando a máquina voltar a funcionar, após o atraso especificado (exceto os intervalos especiais + o atraso aleatório, consulte a resposta em @spechal).
storm_m2138
2
@mbrownnyc e também CentOS-7 também
Trevor Boyd Smith
43

No CentOS 6, você precisa grep / etc / anacrontab e a resposta varia se o servidor / laptop / dekstop / etc estiver desativado ou não.

cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1   5   cron.daily      nice run-parts /etc/cron.daily
7   25  cron.weekly     nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly        nice run-parts /etc/cron.monthly

Portanto, entre as 3 da manhã e as 22 da noite (após a reinicialização e a máquina estiver em funcionamento por 5 minutos ^^), execute /etc/cron.daily. Se não houver reinicialização, o trabalho deverá ser executado às 3:05 ou mais.

** As defined by START_HOURS_RANGE
^^ As defined by FIELD_TWO (i.e. the 5 after the 1 in the cron.daily line)
++ plus a random time between 0 and 45 minutes as defined by RANDOM_DELAY

Referência: http://linux.die.net/man/5/anacrontab

Spechal
fonte
14

Para sistemas SuSE (especificamente SLES 11.1 e openSuSE 10.3), o tempo de execução diário dos scripts /etc/cron.daily é controlado pelo valor da variável DAILY_TIME configurada no arquivo / etc / sysconfig / cron .

Se a variável DAILY_TIME não estiver configurada, o padrão será: (hora da última inicialização + 15 minutos).

darklion
fonte
thx muito! O SuSE é bastante opaco para mim e agradeço sua resposta.
dr0i
9

No Ubuntu, você encontrará um arquivo / etc / crontab, de onde isso está configurado. Eu acho que é algo semelhante no RH e no Centos.

Sven
fonte
2
Este é o arquivo certo para o Ubuntu Lucid 10.04 LTS. Minha configuração padrão é 6h25 para cron.daily.
precisa saber é o seguinte
Ainda definido como 6:25 no Ubuntu 15.04. Mas percebo que o cron deve inserir alguma aleatoriedade no momento em que inicia os trabalhos. Observando os registros de data e hora dos arquivos que meu trabalho diário cria, vejo que em alguns dias é executado às 6h26 e em outros até às 8h04.
Stéphane
1
Ainda definido às 6:25 no Ubuntu 16.04 - De hora em hora às 17 minutos da última hora. Diariamente às 6h25. Semanalmente às 6:47 da manhã de sábado. Mensalmente às 6h52 do primeiro dia do mês.
WinEunuuchs2Unix
5

O CentOS6.x / RedHat6.x instala por padrão o pacote cronie-anacron. Voce tem que:

yum instalar cronie-noanacron

yum apagar cronie-anacron

Agora você tem o /etc/cron.d/dailyjobs para configurar o melhor horário para seus trabalhos diários, semanais e mensais.

Daniel Santos
fonte
2
Se o anacron estiver instalado, você não poderá simplesmente editar o / etc / anacrontab conforme outros comentários aqui, em vez de desinstalá-lo?
Cincodenada
1
@cincodenada Isso não é o que Daniel Stantos está sugerindo.
Mikemaccana
4

Eu uso o Slackware (14.0) e não tinha /etc/crontab. Além disso, anacronnão faz parte da distribuição.

A solução no meu sistema era tão simples quanto executar crontab -lcomo root:

root@flea:~# crontab -l
# If you don't want the output of a cron job mailed to you, you have to direct
# any output to /dev/null.  We'll do this here since these jobs should run
# properly on a newly installed system.  If a script fails, run-parts will
# mail a notice to root.
#
# Run the hourly, daily, weekly, and monthly cron jobs.
# Jobs that need different timing may be entered into the crontab as before,
# but most really don't need greater granularity than this.  If the exact
# times of the hourly, daily, weekly, and monthly cron jobs do not suit your
# needs, feel free to adjust them.
#
# Run hourly cron jobs at 47 minutes after the hour:
47 * * * * /usr/bin/run-parts /etc/cron.hourly 1> /dev/null
#
# Run daily cron jobs at 4:40 every day:
40 4 * * * /usr/bin/run-parts /etc/cron.daily 1> /dev/null
#
# Run weekly cron jobs at 4:30 on the first day of the week:
30 4 * * 0 /usr/bin/run-parts /etc/cron.weekly 1> /dev/null
#
# Run monthly cron jobs at 4:20 on the first day of the month:
20 4 1 * * /usr/bin/run-parts /etc/cron.monthly 1> /dev/null
arroz
fonte
3

A partir /etc/anacrontabno meu sistema Ubuntu 9.10:

1       5       cron.daily       nice run-parts --report /etc/cron.daily
7       10      cron.weekly      nice run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly nice run-parts --report /etc/cron.monthly
Dennis Williamson
fonte
2

Não existe essa instalação no que diz respeito ao Solaris. Basta usar entradas regulares do crontab para tarefas diárias.

jlliagre
fonte
1

Atualização do OpenSuse 42.x:

/ etc / crontab mostra um arquivo / usr / lib / cron / run-crons que deve ser executado a cada 15 minutos.

/ usr / lib / cron / run-crons (por sua vez, pode ter linhas de código) que está procurando uma variável chamada DAILY_TIME em / etc / sysconfig / cron

O arquivo mostra;

# At which time cron.daily should start. Default is 15 minutes after booting
# the system. Example setting would be "14:00".
# Due to the fact that cron script runs only every 15 minutes,
# it will only run on xx:00, xx:15, xx:30, xx:45, not at the accurate time
# you set.

DAILY_TIME=""

Defina-o para o tempo necessário e reinicie o cron via;

systemctl restart cron.service
MarcoZen
fonte