GNU/Linux >> Belajar Linux >  >> Linux

Hapus N baris pertama dari file log aktif

Saya pikir tugas ini dapat dicapai dengan sed

sed -i '1,10d' myfile

akan menghapus baris dari 1 hingga 10 baris dari file.

Saya pikir semua orang setidaknya harus melihat sed 1 liners ini.

Perhatikan bahwa ini tidak berfungsi untuk file log yang ditambahkan secara aktif oleh aplikasi (seperti yang dinyatakan dalam pertanyaan).

sed -i akan membuat file baru dan 'menghapus' file yang sedang ditulis. Sebagian besar aplikasi akan terus menulis catatan log ke file log yang dihapus dan akan terus mengisi ruang disk. File log baru yang terpotong tidak akan ditambahkan. Ini hanya akan berhenti ketika aplikasi dimulai ulang atau diberi tanda untuk menutup dan membuka kembali file lognya. Pada titik mana akan ada celah (catatan log yang hilang) di file log baru jika ada aktivitas loggable antara penggunaan sed dan aplikasi restart.

Cara yang aman untuk melakukannya adalah dengan menghentikan aplikasi, menggunakan sed untuk memotong log, lalu memulai ulang aplikasi. Pendekatan ini tidak dapat diterima untuk beberapa layanan (mis. server web dengan throughput tinggi dan persyaratan kontinuitas layanan tinggi)


Tidak, sistem operasi seperti Linux, dan sistem filenya, tidak membuat ketentuan untuk menghapus data dari awal file. Dengan kata lain, titik awal penyimpanan untuk file sudah diperbaiki.

Menghapus baris dari awal file biasanya dilakukan dengan menulis data yang tersisa ke file baru dan menghapus yang lama. Jika suatu program membuka file lama untuk ditulis, penghapusan file tersebut ditunda hingga aplikasi menutup file tersebut.

Seperti yang dicatat oleh komentator, untuk alasan yang diberikan dalam kalimat saya sebelumnya, Anda biasanya perlu mengoordinasikan pemangkasan file log dengan program yang menulis log. Tepatnya bagaimana Anda melakukan ini tergantung pada programnya. Beberapa program akan menutup dan membuka kembali file log mereka saat Anda mengirimi mereka sinyal (mis. HUP) dan ini dapat digunakan untuk mencegah catatan log ditulis ke file log yang 'dihapus', tanpa mengganggu layanan.

Ada banyak utilitas yang tersedia untuk mengatur ukuran file log, misalnya logrotate

Beberapa program memiliki utilitasnya sendiri. Misalnya, server web Apache menyertakan utilitas rotatelogs.


Tidak. Solusi untuk masalah umum pertumbuhan file log ini adalah rotasi log. Ini melibatkan pemindahan reguler (malam atau mingguan, biasanya) dari file log yang ada ke beberapa nama file lain dan memulai dari awal dengan file log kosong. Setelah beberapa saat, file log lama dibuang.

Lihat:http://www-uxsup.csx.cam.ac.uk/~jw35/courses/apache/html/x1670.htm


Linux
  1. Bagaimana Cara Menghapus Garis Duplikat Di Dalam File Teks?

  2. Bagaimana Menghapus Baris Kosong Dari File (termasuk Tab Dan Spasi)?

  3. Menggabungkan Garis Berdasarkan Karakter Pertama Dari Baris Berikutnya?

  1. Bash Script Untuk Menghapus File Terlama Dari Folder A?

  2. Gambarkan Secara Acak Sejumlah Garis Dari File Data?

  3. 7 Contoh Perintah Linux Uniq untuk Menghapus Baris Duplikat dari File

  1. Hapus Beberapa Baris Pertama Secara Efisien Dari File Teks?

  2. Cetak file, lewati baris X pertama, di Bash

  3. Hapus baris ganjil atau genap dari file teks