Mencari teks dalam file berukuran besar di Linux
Pernah ketemu file log ukuran 10GB keatas? Saya belum pernah aslinya tapi semua berubah sejak kemarin. 😀 Diminta pertolongan teman untuk ngecek isi VPSnya kok disk spacenya kritis setelah 4 tahun padahal isi websitenya dan kontennya tidak banyak update. Jadi mestinya ada yang bertambah besar. Hehe. 🙂
Masalahnya orangnya ingin tahu apa isi sekian ribu baris terakhir dari file lognya, atau 1GB saja lah yang terbaru. Kan yang lama – lama sebenarnya sudah tidak terpakai lagi. Dan yang bikin repot itu file lognya tidak dipisah – pisah menggunakan logrotate karena ini masih CentOS 5 kalau ga salah. Akhirnya ya jadi 11Gb sekian.
Kalau dibaca pakai cat atau nano ya tidak masuk akal karena bisa lama sekali dan bisa – bisa crash karena kehabisan memori membuka file sebesar itu. Karena kita tahu apa yang dicari (kasus teman saya: alamat IP) maka bisa menggunakan tail dengan parameter yang tepat:
tail -f -c 10G nama_file | grep yang_dicari
Dimana tail akan membaca setelah ukuran 10GB dan dengan grep kita akan mencari tulisan yang dibutuhkan.
Alternatifnya bisa pakai tac (yang merupakan cat terbalik):
tac < nama_file | grep yang_dicari
Sederhana solusinya tapi kalau belum pernah perlu ya sulit. Hehe. 😀 Untung ditemani kopi dan gorengan pas cari wangsitnya. 😛