Cron.daily ne zaman çalışır?


199

cron.daily(Ve .weeklyve .hourly) girişleri ne zaman çalışır ve yapılandırılabilir mi?

Buna kesin bir cevap bulamadım ve bir tane olduğunu umuyorum.

RHEL5 ve CentOS 4 kullanıyorum, ancak diğer dağıtımlar / platformlar için de harika olurdu.


2
On NetBSD , günlük, haftalık, aylık cronjobs için kat root crontab ayarlanır.
hd1

Soru daha genel olacak şekilde düzenlenmişse bu soru daha yararlı olacaktır. En azından soruyu redhat'ın herhangi bir sürümü için jenerik hale getirin, centos sadece 4 ve 5 versiyonları yerine (yaygın olarak kullanılmayan ve " üretimin sonu " ( yaşamın sonuna benzer ) sürümleri) dağıtır .
Trevor Boyd Smith

@TrevorBoydSmith - Bu soru neredeyse 8 yıl önce soruldu. Yeni sürümler için güncellenmiş bir soru sormaktan çekinmeyin. Fakat RHEL 6 Nisan 2010'da bile mevcut değildi : access.redhat.com/articles/3078#RHEL6
warren

@ warren niyetim eleştirmek değil, genel olarak soru ve yığın akışını geliştirmek. (Soru sorulduğunda RHEL 6'nın var olmadığını anlıyorum. Çünkü soru şu anda pek çok olumlu oy aldı, daha genel olması güzel olurdu.)
Trevor Boyd Smith

@TrevorBoydSmith .. zaten CentOS / RHEL 6 için bir cevap var :) ... Bazı fikirleriniz varsa sizden iyi düzenlemeleri onaylamaktan memnuniyet duyarım. Devam edin ve düşündüm soruya önerilen düzenleme yapma
warren

Yanıtlar:


151

Bahsettiğiniz dağıtımlar için:

CentOS 5.4'te (RHEL5 için aynı olmalıdır)

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

Yani cron.daily 04:02 de çalışıyor.

CentOS 4.8’de aynı


1
Bunun arkasında herhangi bir sebep var mı? Yalnızca sunucudaki en sessiz zaman olacağını varsayabilirim.
Piksel Geliştirici

@ Ubuntu'da kaçta çalışıyor? Nasıl kontrol edebileceğimi söyleyebilir misiniz? Komut çıkışını anlayamıyorum
Narendra Jaggi

@NarendraJaggi "run-parts" komutu "bu klasördeki her şeyi çalıştır" anlamına gelir. Cron.daily, vs. klasörleri çalışır, çünkü bu dizinlerde çalıştırma parçaları yürütmek için bir cron işi vardır. Bu nedenle grep run-parts /etc/crontab, bu dizinlerin her biri için çalışma parçalarının ne zaman çağrılacağına ilişkin talimatları bulur.
Jordan Reiter,

2
Bu artık CentOS 6 veya üzeri için geçerli bir cevap değil, daha fazlası için aşağı kaydırın.
lzap

74

Man sayfasından:

 Cron also searches for /etc/anacrontab

/etc/anacrontab sistemimde (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

Ayrıca bakınız man anacrontab


6
Bu durum böyle CentOS 6. Teşekkürler.
mbrownnyc

3
Her "1" günde 5 am demek? Üzgünüz, ama bu hiçbir şeyi cevaplamıyor.
elysch

3
@elysch Cevabımın son satırını tekrar edeyim: Ayrıca bkz. "man anacrontab"
leonbloy

2
Burada anakronun iyi bir açıklaması var . Temelde, anacron sahip sabit bir başlangıç zamanı değil, son işlem belirli bir gecikme ile çalıştırdığınızda dayalı süreç başlayacaktır. İşlemin çalışması gerektiğinde makine kapalıysa , belirtilen gecikmeden sonra, makine geri geldiğinde işlemi başlatır (özel aralıkları engellemeyin + rastgele gecikmeyi engelleyin, @spechal cevabına bakın).
storm_m2138

2
@mbrownnyc ve ayrıca CentOS-7 de
Trevor Boyd Smith

43

CentOS 6 için, grep / etc / anacrontab komutunu vermeniz gerekir ve sunucu / dizüstü bilgisayar / masaüstü / vb. Kapatılıp kapatılmadığının cevabı değişir.

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

Öyleyse, 03:00 ile 10:00 arasında (yeniden başlattıktan sonra ve makine 5 dakika kadar çalıştıktan sonra ^^), /etc/cron.daily komutunu çalıştırın. Yeniden başlatma yoksa, iş 03:05 ++'de çalışmalıdır.

** 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

Referans: http://linux.die.net/man/5/anacrontab


14

SuSE sistemleri için (özellikle SLES 11.1 ve openSuSE 10.3) /etc/cron.daily komut dosyalarının günlük çalışma süresi , / etc / sysconfig / cron dosyasında ayarlanan DAILY_TIME değişkeninin değeri tarafından kontrol edilir .

DAILY_TIME değişkeni ayarlanmadıysa, varsayılan olarak: (son önyükleme zamanı + 15 dakika).


çok teşekkürler! SuSE benim için oldukça opak ve cevabınızı takdir ediyorum.
dr0i

9

Ubuntu'da, yapılandırıldığı yerden / etc / crontab dosyasını bulacaksınız. Sanırım RH ve Centos'ta benzer bir şey.


2
Bu, Ubuntu Lucid 10.04 LTS için doğru dosyadır. Benim varsayılan ayar cron.daily için sabah 6:25.
geekQ

Yine 15.04 Ubuntu'da sabah 6:25 olarak ayarlanmış. Ancak, cron'un işe başladığı sırada bir miktar rastgelelik eklemesi gerektiğini fark ettim. Günlük işimin yarattığı dosyaların zaman damgalarına bakarken, bazı günlerde saat 6: 26'da, diğerlerinde ise sabah 8: 04'te geç kaldığını görüyorum.
Stéphane

1
Yine de Ubuntu’da saat 16: 25’e ayarlanmış 16.04 - Saatlik saat 17: 00’de Her gün 06:25. Haftalık, sabah 6: 47'de. Aylık 6: 52'de, ayın ilk günü.
WinEunuuchs2Unix

5

CentOS6.x / RedHat6.x varsayılan olarak cronie-anacron paketini kurar. Yapman gerek:

yum yüklemek cronie-noanacron

yum silmek cronie-anacron

Ardından, günlük, haftalık ve aylık işleriniz için en iyi zamanlamayı yapılandırmak üzere /etc/cron.d/dailyjobs'a sahipsiniz.


2
Eğer bir anakron kurulursa, / etc / anacrontab 'ı burada kaldırmak yerine, diğer yorumlara göre düzenleyemez misiniz?
cincodenada

1
@ cincodenada Daniel Stantos'un önerdiği şey bu değil.
mikemaccana

4

Slackware (14.0) kullandım ve kullanmıyordum /etc/crontab. Ayrıca, anacrondağıtımın bir parçası değil.

Sistemimdeki çözüm crontab -lkök kadar basitti :

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

3

Gönderen /etc/anacrontabbenim Ubuntu 9.10 sistemde:

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

2

Solaris ile ilgili olarak böyle bir tesis yoktur. Günlük işler için sadece düzenli crontab girişlerini kullanın.


1

OpenSuse 42.x Güncellemesi:

/ etc / crontab, her 15 dakikada bir çalışması gereken / usr / lib / cron / run-crons dosyasını gösterir.

/ usr / lib / cron / run-crons (sırayla bazı kod satırlarına sahip olabilir) / da / etc / sysconfig / cron içinde DAILY_TIME adında bir değişken arıyor

Dosya gösterir;

# 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=""

İhtiyacınız olan zamana ayarlayın ve cron'u yeniden başlatın;

systemctl restart cron.service
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.