Di unix, apa cara terbaik untuk mengurangi ukuran file log besar yang sedang ditulis secara aktif?


11

Pada server linux, saya ingin mengurangi ukuran file log yang beberapa GB besar. Memotong bagian atas, atau mungkin satu juta baris pertama akan berhasil.

Jawaban:


12

Ini muncul dalam wawancara cukup sering ...

Apakah Anda ingin memotong file tanpa mengganggu prosesnya? Apakah ada informasi dalam file log yang berharga? Jika demikian, saya biasanya "nol" file dengan string bash sederhana.

: > /var/log/badlogfile

Ini muncul dalam situasi di mana Anda mungkin memiliki aplikasi yang tidak dapat dimulai kembali secara terkendali. Katakanlah ini adalah aplikasi perdagangan keuangan dan program tidak dapat dihentikan atau dimulai kembali selama hari perdagangan. Namun, file log tumbuh pada tingkat cabul karena bug aplikasi. Memotong file log menggunakan metode di atas atau di bawah ini dapat membuat sistem tetap berjalan.

Lihat juga: http://www.cyberciti.biz/faq/truncate-large-text-file-in-unix-linux/


1
apakah titik dua seharusnya menunjukkan prompt, atau apakah itu benar-benar masuk ke perintah?
Phil

Usus besar adalah bagian dari perintah.
ewwhite

Anda sebenarnya tidak membutuhkan usus besar.
MikeyB

Ini adalah no-op. Itu tidak diperlukan, tapi saya suka menyimpannya di sana ketika saya membuat rekomendasi.
ewwhite

Ini tidak berhasil untuk saya, log tidak berubah ukuran. Ia pergi ke 0, tetapi kemudian kembali ke ukuran penuh
thouliha

2

Anda bisa memasukkannya ke dalam logrotate, maka itu tidak akan lepas kendali dengan mudah


Pada akhirnya itu perlu terjadi. Saya baru di pekerjaan ini ...
Phil

1

Jika secara aktif ditulis untuk Anda tidak memiliki banyak hal yang dapat Anda lakukan dengan memotong. Satu-satunya pilihan Anda adalah mengosongkan file (Anda dapat menyalinnya di tempat lain terlebih dahulu.)

echo "" >/var/log/fileYouWantToEmpty

Dengan begitu file tersebut berakhir kosong tetapi masih berupa file / inode yang sama sehingga tidak akan mengganggu program yang sedang login.


0

Anda juga dapat mencoba cat / dev / null> / var / log /. Tapi, saya harus memperingatkan / dev / null tidak diterapkan di beberapa versi yang lebih lama ...


memotong file tidak bekerja untuk saya, saya melakukan tes pada centos 7 dan redhat 5
c4f4t0r
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.