Cron.daily Linux'ta Çalıştırılma Zamanı Nasıl Değiştirilir


22

Cron.daily'de her sabah belirli bir saatte çalışan bir senaryom var. Çalıştığı zamanı değiştirmem gerekiyor.

Cron.daily komut dosyalarını çalıştırma süresini nasıl değiştirebilirim?

linux  cron  redhat 

Yanıtlar:


24

Red Hat 5 veya daha eski sürümlerde bu kontrol edilir /etc/crontab.

Daha yeni sürümler kullanılır /etc/anacrontab. Varsayılan olarak, cron.dailykomut dosyaları 4:02'de çalıştırılır. Düzenleme /etc/crontabo zamanı değiştirir.

# 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

Debian / Ubuntu sistemlerinde bu da kontrol /etc/crontabedilir.

Örneğin; varsayılan bir Ubuntu 12.04 kurulumu:

# /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 )
#

Her iki durumda da, hangi sözdiziminin kullanılacağı hakkında daha fazla ayrıntıyı burada bulabilirsiniz: http://linux.die.net/man/5/crontab veya man 5 crontabhemen hemen her Linux sisteminde çalışarak.


3
Bunu sudo systemctl restart cron.servicedeğiştirdikten sonra gerçekleştirmeyi unutmayın . Bu, systemdmodern Debian ve Ubuntu gibi tabanlı sistemler için geçerlidir .
TranslucentCloud

3

RHEL / CentOS 6 ve üzeri

# /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

Bu nedenle, saat kaçta nasıl değiştirileceği sorusunu cevaplamak için START_HOURS_RANGE öğesini düzenlemem gerekiyor mu?
thelr

1

OpenSUSE üzerinde crontab şöyle görünür:

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

run-cronsKomut içinde dosyaların zaman doğrular /var/spool/cron/lastrundiğer şeyler arasında. Son yürütme işleminden bu yana geçen süre cron dosyasını yeniden çalıştıracaktır.

Zaman, dosyaya dokunarak etkilenebilir. Örneğin, 2012-11-17 03:15 olarak ayarlamak için:

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

0

Hat orada olmasaydı, bu hiçbir şeyi çözmez.

İle cron.daily nerede belirtilir bulmaya çalışın

grep -R cron.daily /etc

Sonra oradan alın.


Bu komutu kullanırsanız çok dikkatli olmalısınız. Örneğin RedHat'ım için / etc / crontab ve / etc / anacrontab dosyalarını döndürür. Ve cron.daily girişiyle satırları kaldırırsanız, günlük olarak çalıştırılması gereken tüm komut dosyalarının yürütülmesini kapatmanız yeterlidir (benim için logrotate, tmpwatch, cups vb.).
Lukasz Stelmach

2
Çizgiyi kaldırmayı önermedim, soru cron.daily zamanının nerede değiştirileceği idi. Bu nasıl bulmak (yani bu daha bir "onlara yardım kendilerine yardım" tür bir cevabı)

-1

İki şey yapmak istiyorsunuz:

  1. Komut dosyasını cron.daily dosyasından kaldırın ve başka bir yere koyun.
  2. Belirtilen komut dosyasını belirtilen zamanda çalıştırmak için crontab'ınıza bir giriş ekleyin:

00 10 * * * /path/to/script

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.