Apakah mungkin untuk menjalankan satu pemeriksaan logrotate secara manual?

541

Apakah mungkin untuk menjalankan satu iterasi logrotate secara manual tanpa menjadwalkannya pada beberapa interval?

Vladimir
sumber
3
Masalah dengan logrotate adalah bahwa ia memiliki satu file konfigurasi Global, dan TIDAK membiarkan Anda menjalankan file log tunggal memutar sub-konfigurasi sambil tetap menerapkan opsi yang diatur dalam file konfigurasi global. Itu tidak memiliki cara yang baik untuk menjalankan pemeriksaan file rotasi SATU log, persis seperti ketika menjalankan setiap malam dari cron. Itu bisa dilakukan dengan opsi 'batas file log ini', atau lebih baik lagi, 'jalankan konfigurasi global, tetapi hanya sertakan file sub-konfigurasi ini'.
anthony

Jawaban:

717

Iya: logrotate --force $CONFIG_FILE

pilcrow
sumber
115
perhatikan bahwa --forceakan merotasi file walaupun mereka tidak memenuhi kriteria yang ditentukan seperti ukuran kecil, usia, dll.
xofer
4
Jika Anda menempatkan file config logrotate di /etc/logrotate.d/custom.conf apakah artinya ini, Anda tidak perlu menentukan ukuran / waktu kapan log harus diputar secara otomatis? Atau haruskah Anda meletakkan konfigurasi di folder lain jika Anda tidak ingin membuatnya berputar secara otomatis?
Damainman
18
Kriteria "notifempty" tidak diabaikan oleh "--force". Ini mengejutkan saya untuk sementara waktu, jadi saya menyebutkan ini sebagai pengecualian terhadap pernyataan @xofer.
thelogix
16
Anda bisa memutar semua dengan logrotate --force /etc/logrotate.d/(hanya nama direktori)
fcm
1
Memang benar bahwa --forceakan memaksa rotasi bahkan jika file tidak memenuhi kriteria (usia, ukuran, dll), tetapi harap pertimbangkan bahwa ini adalah satu-satunya cara untuk menemukan masalah nyata yang logrotate -dtidak akan muncul (misalnya, saya memiliki server yang kehabisan ruang karena logrotate tidak berjalan selama berbulan-bulan ... dan terima kasih kepada --forcesaya menemukan bahwa ada File existskesalahan. Saya secara manual menghapus file-file itu dan sekarang rotasi dengan benar bekerja lagi!
lucaferrario
559

logrotate -d [your_config_file] memanggil mode debug, memberi Anda deskripsi verbal tentang apa yang akan terjadi, tetapi membiarkan file log tidak tersentuh.

sandover
sumber
81
mereka yang datang ke sini mencari jawaban pertanyaan seperti "bagaimana saya bisa menguji conf logrotate saya?" dapat menganggap ini sebagai jawaban, karena hanya
MENGUJI
tidak terhanyut dengan pendekatan Anda, saya mencoba logrotate --forcedan bekerja dengan baik.
Benyamin Jafari
122

Jika Anda ingin menjalankan secara paksa direktori tunggal atau file log daemon tertentu, Anda biasanya dapat menemukan konfigurasinya /etc/logrotate.d, dan mereka akan bekerja mandiri.

Ingatlah bahwa konfigurasi global yang ditentukan dalam /etc/logrotate.conftidak akan berlaku, jadi jika Anda melakukan ini, Anda harus memastikan Anda menentukan semua opsi yang Anda inginkan dalam /etc/logrotate.d/[servicename]file konfigurasi secara khusus.

Anda dapat mencobanya -duntuk melihat apa yang akan terjadi:

logrotate -df /etc/logrotate.d/nginx

Kemudian Anda dapat menjalankan (menggunakan nginx sebagai contoh):

logrotate -f /etc/logrotate.d/nginx

Dan log nginx saja akan diputar.

trisweb
sumber
1
Ini bagus dan bagus, tetapi Anda kehilangan semua pengaturan global yang Anda miliki di "/etc/logrotate.conf". Saya menulis sebuah skrip untuk menggabungkan file logrotate global dan spesifik bersama-sama kemudian menggunakannya untuk menyelesaikan masalah ini. (lihat jawaban saya).
anthony
Menggunakan logrotate -d /etc/logrotate.confakan berjalan melalui file conf lain yang disertakan juga.
wmassingham
61

Anda mungkin ingin menjalankannya dalam mode verbose + force.

logrotate -vf /etc/logrotate.conf

vivekv
sumber
36

Cara menjalankan semua logrotate adalah:

logrotate -f /etc/logrotate.conf

yang akan menjalankan file logrotate primer, yang mencakup konfigurasi logrotate lainnya juga

Allen Hancock
sumber
21

Keluarkan perintah berikut, cara menjalankan logrotate yang ditentukan:

logrotate -vf /etc/logrotate.d/custom

Pilihan:

-v: tunjukkan prosesnya

-f: memaksa menjalankan

custom: pengaturan log yang ditentukan pengguna

misal: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}
melonggarkan
sumber
plus1 untuk benar-benar memberikan contoh lengkap. PS Bagaimana kita bisa menentukan apa logrotate sebenarnya untuk file ?
personal_cloud
7

edit /var/lib/logrotate.status untuk mereset tanggal 'terakhir diputar' pada file log yang ingin Anda uji.

Kemudian jalankan logrotate YOUR_CONFIG_FILE.

Atau Anda dapat menggunakan flag --force, tetapi mengedit logrotate.status memberi Anda lebih presisi atas apa yang bisa dan tidak diputar.

Ben Aveling
sumber
Ini /var/lib/logrotate.statusfile tidak ada pada Debian Squeeze.
Lashae
Coba / var / lib / logrotate / status. Saya tidak yakin apakah ini debian / redhat, atau jika saya meletakkan "." di mana saya seharusnya meletakkan "/".
Ben Aveling
2

Membuat skrip shell untuk memecahkan masalah.

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

Script ini akan menjalankan hanya file sub-konfigurasi logrotate tunggal yang ditemukan di "/etc/logrotate.d", tetapi termasuk pengaturan global dari dalam file konfigurasi global "/etc/logrotate.conf". Anda juga dapat menggunakan pilihan lain untuk mengujinya ...

Sebagai contoh...

  logrotate_one -d syslog
anthony
sumber