Saya bertanya-tanya apakah ada cara yang tepat untuk menghapus log secara umum?
Saya baru di Ubuntu dan saya mencoba mengatur Postfix. Log in yang dimaksud adalah /var/log/mail.log
. Saya bertanya-tanya apakah ada cara yang benar untuk menghapusnya, daripada saya yang masuk dan menghapus semua baris dan menyimpannya. Saya menemukan bahwa kadang-kadang kesalahan tidak dapat dituliskan segera setelah saya menghapus log dan menyimpannya.
Catatan: Saya mengalami masalah dalam mengatur Postfix dan berusaha membuatnya lebih mudah bagi saya untuk membaca log dengan harapan dapat membantu saya, daripada harus gulir ke bawah.
Jawaban:
Anda dapat gunakan:
Itu akan memotong log tanpa Anda harus mengedit file. Ini juga cara yang dapat diandalkan untuk mendapatkan ruang kembali. Kadang-kadang orang membuat kesalahan dengan menggunakan rm pada log kemudian membuat ulang nama file, jika proses lain memiliki file terbuka maka Anda tidak mendapatkan ruang kembali sampai proses itu menutup itu menangani di atasnya dan Anda dapat mengacaukan izin itu.
Juga jika Anda menonton konten log Anda mungkin ingin menggunakan
tail
perintah:Ctrl-C akan menghentikan tailing.
sumber
/bin/csh
(umum untuk FreeBSD) akan menjamin ini dengan "Perintah null tidak valid", sementara ituzsh
(pengganti populer untukbash
) akan menunggu EOF. Lihat serverfault.com/a/381380/67675>
sintaks di crontab tidak berjalan karena mungkin tidak mengenalinya sebagai sintaksYa, ada cara yang tepat: Anda tidak menghapus log sama sekali. Anda memutar mereka. Rotasi melibatkan pengalihan output log ke file baru, dengan nama yang sama, dengan file log N sebelumnya disimpan di bawah set nama file terkait N.
Bagaimana seseorang memutar log tergantung dari bagaimana seseorang menulisnya di tempat pertama. Ini adalah poin yang sering diabaikan. Beberapa jawaban di sini menyentuh setidaknya, menyebutkan bahwa beberapa program logging menyimpan deskriptor file terbuka untuk file log, jadi hanya menghapus file tidak akan membebaskan ruang, atau bahkan beralih output ke file log baru.
Jika program yang menulis file log
multilog
daridaemontools
paket , misalnya, maka Anda tidak melakukan apa pun untuk memutar log sama sekali - tidak ada skrip manual, tidak adacron
pekerjaan. Katakan sajamultilog
bahwa log output adalah ke direktori, dan itu sendiri akan mempertahankan secara otomatis diputar dan ukuran file log N tertutup dalam direktori itu.Jika program yang menulis file log
svlogd
darirunit
paket , untuk contoh lain, maka banyak hal yang sama berlaku. Anda tidak melakukan apa-apa selain dari titik alat di direktori. Itu sendiri akan memelihara satu set N file log yang diputar secara otomatis dan ukuran-capped dalam direktori itu.Jika Anda menggunakan
rsyslog
untuk menulis file log, maka program logging dapat diperintahkan untuk berhenti setelah file log mencapai ukuran tertentu dan menjalankan skrip . Anda harus menulis daging skrip, untuk benar-benar mengganti nama file log dan menghapus file log lama berdasarkan batasan ukuran total, tetapi setidaknya program logging telah menutup file dan berhenti menulis log saat ini sedang terjadi.Cara lama
syslogd
memutar log, masih diharapkan oleh program logging seperti syslog-ng dan dicontohkan oleh alat-alat seperti yanglogrotate
disebutkandjangofan
dalam jawaban lain di sini, agak lebih serampangan. Seseorang menjalankancron
pekerjaan yang secara berkala mengganti nama file log, dan me-restart daemon logging (menggunakan pengawas daemon apa pun yang dijalankannya di bawah). Masalah dengan ini, tentu saja adalah bahwa hal itu tidak memberlakukan batas ukuran keseluruhan. Pada minggu-minggu yang lambat seseorang dapat memperoleh N file log harian yang sangat kecil, sedangkan pada hari-hari yang sibuk seseorang dapat memperoleh 1 file log yang sangat besar yang melebihi batas ukuran.Inilah sebabnya mengapa nanti dan alat yang lebih baik suka
multilog
dansvlogd
memiliki opsi konfigurasi ukuran file dan sebenarnya memeriksa ukuran file log itu sendiri, tentu saja. Dunia telah belajar bahwa polling log pada jadwal dengancron
pekerjaan, atau bahkanlogrotate
daemon, meninggalkan jendela untuk ukuran menjadi salah, dan bahwa tempat yang tepat untuk melakukan pemeriksaan ini, dan dengan keras menegakkan topi ukuran yang ditentukan administrator sehingga seseorang file log tidak pernah menelan partisi yang mereka aktifkan, ada dalam program yang sebenarnya menulis file di tempat pertama.sumber
template(name="DYNmail" type="string" string="/var/log/%$YEAR%/%$MONTH%/%$DAY%/mail.log")
arahan, diikuti oleh aif ($syslogfacility-text == 'mail') then -?DYNmail;TraditionalFormat
. Dengan cara ini, rotasi log bukan masalah, setidaknya ketika satu file per hari tidak masalah. Untuk volume log yang sangat tinggi (perlu beberapa rotasi per hari), ada$HOUR
juga.Anda dapat menggunakan ini juga ..
Di sini semua file log di / opt / package / log akan menjadi kosong ..
sumber
Ya, ada alat untuk linux yang disebut LogRotate .
sumber
Jika alasan Anda menghapus log adalah untuk mengosongkan ruang, Anda dapat menggunakan / dev / null untuknya, tanpa mengganggu program yang menulisnya. Jangan pernah menghapusnya! beberapa perangkat lunak mungkin mengeluh dengan berhenti bekerja atau mengabaikan log sepenuhnya sampai restart berikutnya
sumber
for i in $(find /var/log -type f); do cat /dev/null > $i; done
Timpa konten pendek dan kompatibel:
: > /dest/file
Tetapi ada juga pemanggilan sistem terpotong (2), dan alat userspace yang sesuai
truncate
pada banyak * NIX'es.sumber
Jika Anda ingin menyimpan file sebelum membersihkannya, Anda dapat melakukan:
Jika Anda ingin mencari teks atau email tertentu di log, Anda dapat menggunakan grep. Jika Anda ingin menyimpan beberapa gambar tentang penggunaan email, Anda dapat menggunakan AWStats.
sumber
Inilah cara saya melakukannya, dan ini hanya untuk NGINX, Anda dapat menghapusnya agar dapat berfungsi pada semua file log.
sumber
Bekerja untukku
sumber