Saya ingin melakukan perhitungan sederhana dari jumlah baris per menit yang ditambahkan ke file log.
Saya juga ingin menyimpan hitungan untuk setiap detik.
Yang saya butuhkan adalah output dari perintah berikut sebagai daftar yang akan diperbarui setiap detik:
watch -n1 'wc -l my.log'
Bagaimana cara mengeluarkan 'pembaruan' dari perintah 'tonton' sebagai daftar?
wait
- coba sajawatch -n 1 "sleep 5"
.watch
yang berguna, tetapi itu tidak memberi Anda bahkan sehingga solusi Anda sebagus arloji berbasis, tetapi tidak ada yang menjawab pertanyaan "laju pertumbuhan file log" dengan akurasi tinggi.watch
memiliki-p
opsi yang akan melakukannya dengan benar, jika keadaan memungkinkan (jelas, Anda tidak dapat melakukan perintah yang membutuhkan 5 detik setiap 1 detik, jika Anda tidak diizinkan multipel secara bersamaan). Saya tahu, saya menulisnya :-PSebuah pertanyaan lama, tetapi saya baru saja menemukan jawaban yang sangat mudah:
Ini akan mengeksekusi
wc
setiap detik Anda, menambahkan hasilnya ke file stats.log, dan juga memperlihatkannya di layar.Jadi, Anda akan berakhir dengan file yang diisi dengan angka, mewakili jumlah baris berturut-turut
my.log
.sumber
watch "($MYCMD | tee -a $MYLOG)"
bukanwatch "($MYCMD)" | tee -a $MYLOG
. Jika Anda salah seperti yang saya lakukan, hasilnya akan sangat membingungkan. Satu hal yang perlu diperhatikan di sini adalah bahwa perintah ini tidak menambahkan stempel waktu dari setiap eksekusi perintah secara default, jadi jawaban dengan loop mungkin masih berfungsi lebih baik untuk Anda.Bagaimana tentang
sumber
Coba yang berikut ini:
sumber
Saya menemukan pertanyaan ini ketika saya mencoba untuk mendapatkan yang lebih baik / keluaran log dari
du -sh $data_path
. Saya menggunakan pola "while command, do sleep" yang ditemukan di sini, tetapi menggunakan beberapa AWK yang kompleks untuk memberikan hasil yang saya inginkan.Saya benar-benar melakukan ini sebagai oneliner, itulah sebabnya ada titik koma. Tetapi untuk membuatnya mudah dibaca, saya memecahkannya. Outputnya terlihat seperti:
sumber
Anda dapat membuat skrip yang melakukannya untuk Anda. Saya menelepon milik saya
keep
(seperti, terus melakukannya) dan meletakkannya dibin
jalan.Ini skrip saya:
sumber
"$@"
untuk mengeksekusi perintah (argumen) bukan tanda kutip$*
. Dengan cara ini Anda akan memiliki shell menyimpan argumen yang dikutip, dll. Seperti yang diharapkan pengguna. FTFY.