Kapan `cron.daily` dijalankan?

199

Kapan entri dalam cron.daily(dan .weeklydan .hourly) berjalan, dan apakah dapat dikonfigurasi?

Saya belum menemukan jawaban pasti untuk ini, dan saya berharap ada satu.

Saya menjalankan RHEL5 dan CentOS 4, tetapi untuk distro / platform lain akan lebih bagus juga.

warren
sumber
2
Di NetBSD , waktu untuk cronjobs harian, mingguan, bulanan diatur dalam crontab root.
HD1
Pertanyaan ini akan lebih bermanfaat jika pertanyaan diedit menjadi lebih umum. Paling tidak buat pertanyaan umum untuk versi redhat apa pun, distro centos alih-alih hanya untuk versi 4 dan 5 (yang tidak banyak digunakan dan merupakan " akhir produksi " (mirip dengan akhir masa pakai )
Trevor Boyd Smith
@TrevorBoydSmith - pertanyaan ini ditanyakan hampir 8 tahun yang lalu. Jangan ragu untuk meminta yang diperbarui untuk versi yang lebih baru. Tetapi RHEL 6 bahkan tidak ada pada bulan April 2010: access.redhat.com/articles/3078#RHEL6
warren
@warren maksud saya bukan untuk mengkritik tetapi hanya meningkatkan pertanyaan dan stackoverflow secara umum. (Saya mengerti bahwa RHEL 6 tidak ada ketika pertanyaan diajukan. karena pertanyaan itu memiliki begitu banyak upvotes sekarang, akan lebih baik untuk membuatnya lebih umum.)
Trevor Boyd Smith
@TrevorBoydSmith .. sudah ada jawaban untuk CentOS / RHEL 6 :) ... Saya akan dengan senang hati menyetujui suntingan yang baik dari Anda jika Anda memiliki beberapa ide. Silakan lakukan pengeditan yang disarankan untuk pertanyaan yang sudah Anda pikirkan
warren

Jawaban:

151

Untuk distribusi yang Anda sebutkan:

Pada CentOS 5.4 (Seharusnya sama untuk 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

Jadi cron.daily berjalan pada pukul 04:02 pagi.

Sama dengan CentOS 4.8

Richard Holloway
sumber
1
Apakah ada alasan di balik ini? Saya hanya bisa berasumsi itu akan menjadi waktu paling sunyi di server.
Pengembang Pixel
@ jam berapa ini berjalan di ubuntu? dapatkah Anda memberi tahu bagaimana cara memeriksanya? saya tidak dapat memahami output perintah
Narendra Jaggi
@NarendraJaggi perintah "run-parts" berarti "jalankan semua yang ada di folder ini". Folder cron.daily, etc. berfungsi karena ada tugas cron untuk menjalankan run-parts pada direktori ini. Jadi grep run-parts /etc/crontabtemukan saja petunjuknya ketika run-parts dipanggil untuk masing-masing direktori ini.
Jordan Reiter
2
Ini bukan lagi jawaban yang valid untuk CentOS 6 atau lebih tinggi, gulir ke bawah untuk lebih.
lzap
74

Dari halaman manual:

 Cron also searches for /etc/anacrontab

/etc/anacrontab dalam sistem saya (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

Lihat juga man anacrontab

leonbloy
sumber
6
Ini adalah kasus dengan CentOS 6. Terima kasih.
mbrownnyc
3
Itu berarti jam 5 pagi setiap "1" hari? Maaf, tapi ini tidak menjawab apa pun.
elysch
3
@elysch Biarkan saya mengulangi baris terakhir dari jawaban saya: Lihat juga "man anacrontab"
leonbloy
2
Penjelasan yang bagus tentang anacron di sini . Pada dasarnya, anacron tidak memiliki waktu mulai yang tetap , melainkan akan memulai proses berdasarkan pada saat proses terakhir berjalan, dengan penundaan yang ditentukan. Jika mesin mati ketika proses seharusnya berjalan , maka ia akan memulai proses ketika mesin kembali, setelah penundaan yang ditentukan (tidak ada rentang khusus + penundaan acak, lihat jawaban oleh @ spechal).
storm_m2138
2
@mbrownnyc dan juga CentOS-7 juga
Trevor Boyd Smith
43

Untuk CentOS 6, Anda perlu grep / etc / anacrontab dan jawabannya bervariasi jika server / laptop / dekstop / etc telah dimatikan atau tidak.

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

Jadi, antara jam 3 pagi dan 10 malam (setelah reboot dan setelah mesin sudah dinyalakan selama 5 menit ^^), jalankan /etc/cron.daily. Jika tidak ada reboot, pekerjaan harus berjalan pada 3:05 AM++.

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

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

Spechal
sumber
14

Untuk sistem SuSE (khususnya SLES 11.1 dan openSuSE 10.3) waktu menjalankan harian skrip /etc/cron.daily dikontrol oleh nilai variabel DAILY_TIME yang diatur dalam file / etc / sysconfig / cron .

Jika variabel DAILY_TIME tidak diatur, standarnya adalah: (waktu boot terakhir + 15 menit).

darklion
sumber
Terima kasih banyak! SuSE agak buram bagi saya dan saya menghargai jawaban Anda.
dr0i
9

Di Ubuntu, Anda akan menemukan file / etc / crontab, tempat konfigurasi ini. Saya kira itu adalah sesuatu yang serupa pada RH dan Centos.

Sven
sumber
2
Ini adalah file yang tepat untuk Ubuntu Lucid 10.04 LTS. Pengaturan default saya adalah 6:25 pagi untuk cron.daily.
geekQ
Masih ditetapkan sebagai 06:25 di Ubuntu 15.04. Tapi saya perhatikan bahwa cron harus memasukkan beberapa keacakan saat memulai pekerjaan. Melihat cap waktu dari file-file yang diciptakan oleh pekerjaan harian saya, saya melihat pada beberapa hari itu berjalan sedini 6:26, dan pada yang lain hingga 8:04 pagi.
Stéphane
1
Masih ditetapkan pada 6:25 pagi di Ubuntu 16.04 - Setiap jam pada jam 17 menit. Setiap hari jam 6:25 pagi. Setiap minggu jam 6:47 Sabtu. Bulanan pukul 6:52 pagi hari pertama bulan ini.
WinEunuuchs2Unix
5

CentOS6.x / RedHat6.x menginstal secara default paket cronie-anacron. Kamu harus:

yum instal cronie-noanacron

yum menghapus cronie-anacron

Maka sekarang Anda memiliki /etc/cron.d/dailyjobs untuk mengonfigurasi waktu jadwal terbaik untuk pekerjaan harian, mingguan, dan bulanan Anda.

Daniel Santos
sumber
2
Jika anacron diinstal, tidak bisakah Anda mengedit / etc / anacrontab sesuai komentar lain di sini daripada menghapusnya?
cincodenada
1
@cincodenada Bukan itu yang disarankan Daniel Stantos.
mikemaccana
4

Saya menggunakan Slackware (14.0), dan tidak punya /etc/crontab. Juga, anacronbukan bagian dari distribusi.

Solusi pada sistem saya sesederhana menjalankan crontab -lsebagai 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
padi
sumber
3

Dari /etc/anacrontabpada sistem Ubuntu 9.10 saya:

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
sumber
2

Tidak ada fasilitas seperti itu sejauh Solaris yang bersangkutan. Cukup gunakan entri crontab biasa untuk tugas sehari-hari.

Jlliagre
sumber
1

Pembaruan OpenSuse 42.x:

/ etc / crontab menampilkan file / usr / lib / cron / run-crons yang seharusnya dijalankan setiap 15 menit.

/ usr / lib / cron / run-crons pada gilirannya (memiliki baris kode may) yang mencari variabel yang disebut DAILY_TIME di / etc / sysconfig / cron

File menunjukkan;

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

Setel ke waktu yang Anda butuhkan dan mulai ulang cron via;

systemctl restart cron.service
MarcoZen
sumber