Saya tidak sengaja menghapus /var/log/mail
file. Sampai saat itu saya bisa memantaunya menggunakan postfix. Sekarang, tampaknya Postfix tidak mengirimkan /var/log/mail
lognya, karena file tersebut tidak diperbarui dengan pesan log baru.
10
Bahkan setelah membuat file kosong
Anda harus memulai ulang syslog
dan kemudian mendapatkan keuntungan :)
sumber
Ini adalah bug di syslog, tetapi menggambarkan masalah umum ketika seseorang menghapus file saat dibuka oleh suatu program. Ketika Anda melakukan "rm", Anda menghapus entri direktori, tetapi Anda TIDAK menghapus file yang mendasarinya. Sistem operasi menyimpan hitungan referensi ke file, dan tidak akan benar-benar menghapus data file yang mendasarinya sampai jumlah referensi menjadi nol. Dalam kasus file rata-rata, jumlah referensi dari file yang belum dibuka adalah satu (entri direktori). Saat file dibuka, hitungannya bertambah menjadi dua. Jika program kedua membuka file yang sama, jumlah akan bertambah menjadi tiga. Jika entri direktori sekarang dihapus, hitungannya dikurangi menjadi dua - yang berarti bahwa file tersebut anomim (tidak memiliki nama),
Ketika Anda menghapus / var / log / mail, logger sistem masih memiliki file yang terbuka untuk ditulis. Jika Anda membuat / var / log / mail baru, itu akan mengarah ke file yang berbeda dari yang sedang ditulis logger sistem. Satu-satunya cara untuk membuat semuanya konsisten adalah me-restart logger sistem. Ketika logger sistem asli berakhir, semua file yang terkait dengannya ditutup - termasuk log surat anonim yang entri direktori Anda dihapus. Ketika Anda me-restart logger sistem, itu akan membuka kembali / var / log / mail ketika perlu menulis pesan log, dan akan tetap terbuka setelahnya.
Cara lain yang sering ditemukan adalah ketika program yang sedang berjalan mengisi semua disk dengan data file; pengguna menghapus file yang sangat besar, tetapi ruang disk tidak dibebaskan, karena file tersebut masih ada, dan mengambil ruang disk, tetapi entri direktori telah dihapus. Ketika program berakhir (baik karena pengguna membunuhnya atau berakhir sendiri), ruang disk akan dipulihkan karena jumlah referensi pada file akan menjadi nol.
Apa yang bisa dilakukan oleh logger untuk mencegah hal ini adalah pertama-tama menulis pesan log, periksa untuk melihat apakah entri direktori file log ada, dan jika tidak ada, tutup file log asli, buka yang baru, lalu tulis ulang pesan - agar pesan tidak hilang. Tetapi untuk melakukan semua itu akan membutuhkan lebih banyak kerumitan daripada yang harus dimiliki oleh sistem logger - untuk setiap pesan yang ditulisnya akan membutuhkan waktu lebih lama untuk ditulis karena pemeriksaan direktori tambahan - yang akan berhasil setiap kali file memiliki TIDAK dihapus.
Untuk memahami semua hal di atas dengan lebih jelas, perintah berikut ini bersifat instruktif, karena menjelaskan panggilan sistem yang melakukan penghapusan entri direktori dan pengurangan referensi: "man 3 unlink"
sumber
Itu bukan masalah pada CentOS 7. Seseorang berpikir itu akan menjadi ide bagus untuk memiliki log surat postfix untuk pergi melalui jurnalis. Jika Anda ingin melihat log postfix:
(untuk melihat seluruh log)
(untuk mengekor log)
Anda juga mungkin perlu di main.cf untuk postfix
sumber
journalctl --vacuum-time=1d
fwiw versi postfix log yang lebih baru
/var/log/mail.log
dan saya juga harus menjalankansudo chmod a+w /var/log/mail*
danservice postfix restart
mendapatkan log postfix saya kembali setelah menghapusnyasumber