Como alterar a hora em que cron.daily é executado no linux


22

Eu tenho um script no cron.daily que é executado em um determinado horário todas as manhãs. Eu preciso mudar o tempo que é executado.

Como altero o tempo em que cron.daily executa os scripts?

linux  cron  redhat 

Respostas:


24

No Red Hat 5 ou mais antigo, isso é controlado /etc/crontab.

Versões mais recentes usam /etc/anacrontab. Por padrão, os cron.dailyscripts são executados às 4:02. A edição /etc/crontabmodificará esse horário.

# run-parts
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

Nos sistemas Debian / Ubuntu, isso também é controlado /etc/crontab.

Por exemplo; uma instalação padrão do Ubuntu 12.04:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Em ambos os casos, você pode encontrar mais detalhes sobre qual sintaxe usar aqui: http://linux.die.net/man/5/crontab ou executando man 5 crontabem quase qualquer sistema Linux.


3
Não se esqueça de executar sudo systemctl restart cron.servicedepois de modificar isso. Isso é verdade para systemdsistemas baseados em sistemas, como o Debian moderno e o Ubuntu.
TranslucentCloud

3

no RHEL / CentOS 6 e acima

# /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, para responder à pergunta de como alterar o horário, preciso editar o START_HOURS_RANGE, correto?
thelr 21/10

1

No openSUSE, o crontab se parece com:

SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1

O run-cronscomando verifica os registros de data e hora dos arquivos /var/spool/cron/lastrunentre outras coisas. Quando o tempo desde a última execução expirar, ele executará o arquivo cron novamente.

A hora pode ser influenciada ao tocar no arquivo. Por exemplo, para defini-lo como 17/11/2012 03:15:

touch -t 201211140315 /var/spool/cron/lastrun/cron.daily

0

Se a linha não estivesse lá, isso não resolveria nada.

Tente encontrar onde o cron.daily é mencionado, com

grep -R cron.daily /etc

Então tire isto dali.


Você precisa ter muito cuidado se usar esses comandos. Por exemplo, para o meu RedHat, ele retorna os arquivos / etc / crontab e / etc / anacrontab. E se você remover linhas com a entrada cron.daily, simplesmente desative a execução de todos os scripts que devem ser executados diariamente (para mim é logrotate, tmpwatch, cups e assim por diante).
Lukasz Stelmach

2
Não sugeri remover a linha, a questão era onde modificar o horário do cron.daily. Isto é como você localizá-lo (assim que este era mais um "ajuda-los a se ajudarem" tipo de resposta)

-1

Você quer fazer duas coisas:

  1. Remova o script do cron.daily e coloque-o em outro lugar.
  2. Adicione uma entrada ao seu crontab para executar o script especificado no horário especificado:

00 10 * * * /path/to/script

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.