GNU/Linux >> Belajar Linux >  >> Linux

Mengapa logrotate CentOS saya berjalan secara acak?

Solusi 1:

Kuncinya adalah mengetahui bahwa CentOS menjalankan skrip di /etc/cron.{daily,weekly,monthly} dari anacron ... /etc/anacrontab sedang mengatur RANDOM_DELAY , yang melakukan apa yang Anda harapkan (tertunda hingga RANDOM_DELAY menit sebelum memulai pekerjaan)...

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

Menyetel RANDOM_DELAY=0 / START_HOURS_RANGE=3 memperbaiki masalah...

EDIT

Setelah berpikir lebih jauh, saya akan menghapus anacron dan instal vixie normal cron ...

Solusi 2:

Bukan jawabannya, tetapi saya baru-baru ini mencoba mencari tahu karena alasan lain dan tidak dapat menemukan dokumentasi tentang bagaimana Redhat 6, Centos, dll menjalankan cron. Inilah yang saya rekayasa balik:

  1. crond masih berjalan saat startup sistem - memuat semua file dalam /etc/cron.d
  2. /etc/cron.d/0hourly menjalankan semua file di /etc/cron.hourly
  3. /etc/cron.hourly/0anacron menjalankan anacron
  4. anacron memuat /etc/anacrontab
  5. /etc/anacrontab berjalan (melalui run-parts ) /etc/cron.daily , /etc/cron.weekly dan /etc/cron.monthly

Jadi, ini lebih rumit dari versi sebelumnya.

Dimungkinkan untuk memulihkan perilaku lama dengan menambahkan entri per jam, mingguan, dan bulanan kembali ke /etc/crontab (yang sekarang kosong), tapi anacrontab akan perlu diperbarui juga. Ini mungkin atau mungkin tidak merusak pembaruan di masa mendatang...

Solusi 3:

Jawaban lain mencakup bagaimana tetapi belum tentu mengapa . Alasan adalah untuk mencegah pekerjaan cron malam hari mematikan infrastruktur Anda. (Bayangkan penyimpanan bersama, atau mungkin 1000 server berjalan di satu host VM, atau hanya pekerjaan malam yang mengenai beberapa layanan jaringan.)

Saya selalu memecahkan masalah ini untuk rotasi log secara khusus pada sistem saya dengan memindahkan pekerjaan rotasi log tertentu dari cron.daily ke entri dengan waktu hard-code di cron.d . Dengan begitu, Anda masih mendapatkan proses yang terhuyung-huyung untuk layanan seperti updatedb di mana waktu sebenarnya tidak penting, tetapi waktu yang konsisten untuk rotasi log.

Tentu saja, ketika Anda mencapai ukuran tertentu, Anda ingin semua log Anda dikirim dari host ke server log, dan kemudian waktu rotasi file pada masing-masing node menjadi kurang penting, karena itu hanya ada untuk kenyamanan (biasanya mengikuti ekor file) atau sebagai langkah mundur terakhir. Lalu, Anda pasti atur rotasi pada server log Anda menjadi sistematis.


Linux
  1. Cara membuat kata sandi acak di linux menggunakan /dev/random

  2. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  3. Centos – Bagaimana Cara Melihat Semua Catatan Cron Di Centos7?

  1. Bagaimana /etc/motd Diperbarui?

  2. Mengapa `cat /dev/urandom` merusak terminal Anda?

  3. Bagaimana cara mengatur logrotate untuk memutar log setiap jam?

  1. CentOS / RHEL :Cara Memulihkan dari file /etc/passwd yang dihapus

  2. Mengapa dd from /dev/random memberikan ukuran file yang berbeda?

  3. Kapan `cron.daily` berjalan?