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.

Phil
sumber

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/

putih
sumber
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

netpixie
sumber
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.

Twirrim
sumber
0

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

Nandhini Anand
sumber
memotong file tidak bekerja untuk saya, saya melakukan tes pada centos 7 dan redhat 5
c4f4t0r