GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada cara yang tepat untuk menghapus log?

Solusi 1:

Anda dapat menggunakan:

> /var/log/mail.log

Itu akan memotong log tanpa Anda harus mengedit file. Ini juga cara yang andal untuk mendapatkan ruang kembali. Kadang-kadang orang membuat kesalahan dengan menggunakan rm pada log kemudian membuat ulang nama file, jika proses lain membuka file maka Anda tidak mendapatkan ruang kembali sampai proses itu menutup pegangannya dan Anda dapat mengacaukan izinnya.

Juga jika Anda melihat isi log Anda mungkin ingin menggunakan tail perintah:

tail -f /var/log/mail.log

Ctrl-C akan memutuskan tailing.

Solusi 2:

Ya, ada cara yang tepat:Anda tidak membersihkan log sama sekali. Anda memutar mereka. Rotasi melibatkan pengalihan keluaran log ke file baru, dengan nama yang sama, dengan N file log sebelumnya disimpan di bawah N nama file terkait.

Cara seseorang merotasi log tergantung dari cara seseorang menulisnya. Ini adalah poin yang sering diabaikan. Beberapa jawaban di sini setidaknya menyentuhnya, menyebutkan bahwa beberapa program logging menyimpan deskriptor file terbuka untuk file log, jadi menghapus file saja tidak akan mengosongkan ruang, atau bahkan mengalihkan keluaran ke file log baru.

Jika program menulis file log adalah multilog dari daemontools paket, misalnya, maka Anda tidak melakukan apa pun untuk merotasi log sama sekali — tidak ada skrip manual, tidak ada cron pekerjaan. Cukup beri tahu multilog keluaran log itu adalah ke direktori, dan itu sendiri akan mempertahankan set file log N yang diputar dan dibatasi ukurannya secara otomatis di direktori itu.

Jika program menulis file log adalah svlogd dari runit paket, sebagai contoh lain, maka hal yang sama berlaku. Anda tidak melakukan apa pun selain mengarahkan alat ke direktori. Itu sendiri akan mempertahankan set file log N yang diputar dan dibatasi ukurannya secara otomatis di direktori itu.

Jika Anda menggunakan rsyslog untuk menulis file log, maka program logging dapat disuruh berhenti setelah file log mencapai ukuran tertentu dan menjalankan skrip. Anda harus menulis isi 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 menghentikan sementara penulisan log saat ini terjadi.

syslogd lama cara merotasi log, masih diharapkan oleh program logging seperti syslog-ng dan seperti yang dicontohkan oleh alat seperti logrotate disebutkan oleh djangofan di jawaban lain di sini, agak lebih serampangan. Seseorang menjalankan cron pekerjaan yang secara berkala mengganti nama file log, dan memulai ulang daemon logging (menggunakan pengawas daemon apa pun yang menjalankannya). Masalah dengan ini, tentu saja, tidak menerapkan batas ukuran keseluruhan. Pada minggu-minggu yang lambat seseorang bisa mendapatkan N file log harian yang sangat kecil, sedangkan pada hari-hari sibuk seseorang bisa mendapatkan 1 file log yang sangat besar yang melebihi batas ukuran.

Inilah mengapa alat yang lebih baru dan lebih baik seperti multilog dan svlogd memiliki opsi konfigurasi ukuran file dan benar-benar memeriksa sendiri ukuran file log, tentu saja. Dunia telah belajar bahwa polling log pada jadwal dengan cron pekerjaan, atau bahkan logrotate daemon, meninggalkan jendela untuk ukuran yang salah, dan bahwa tempat yang tepat untuk melakukan pemeriksaan ini, dan dengan ketat menegakkan batas ukuran yang ditentukan administrator sehingga file log seseorang tidak pernah menelan partisi tempat mereka berada, ada di dalam program yang sebenarnya menulis file di tempat pertama.

Solusi 3:

Anda juga dapat menggunakan ini..

truncate /opt/package/logs/*.log --size 0

Di sini semua file log di /opt/package/logs akan menjadi kosong..

Solusi 4:

Ya, ada alat untuk linux bernama LogRotate .

Solusi 5:

Jika alasan Anda menghapus log adalah untuk mengosongkan ruang, Anda dapat cat /dev/null ke log tersebut, tanpa mengganggu penulisan program di dalamnya. Jangan pernah menghapusnya! beberapa perangkat lunak mungkin mengeluh dengan berhenti bekerja atau mengabaikan log sepenuhnya hingga restart berikutnya

cat /dev/null > /path/to/logfile

# to empty all the logs in a directory
for i in /var/log/*; do cat /dev/null > $i; done

Linux
  1. Apa Cara Nyaman Memeriksa Apa yang Ditambahkan Ke File Log Secara Realtime?

  2. Temukan File Log Firefox?

  3. Cara Mengosongkan File Log di Linux

  1. Apakah ada cara untuk memotong file NETCDF?

  2. Apakah ada cara untuk menentukan ukuran file .bz2 yang didekompresi?

  3. Apakah ada cara untuk mengedit bookmark nautilus (pengelola file) yang ada?

  1. Rotasi log stdout?

  2. Apakah ada cara untuk melanjutkan scp file yang terputus?

  3. Apakah ada cara untuk mendengarkan proses?