Saya seorang pemula untuk linux dan saya mencoba untuk menonton perintah dan mencoba untuk login ke file. Saya mencoba
watch -t -n 10 "(tanggal '+ WAKTU:% H:% M:% S'; ps aux | grep" pola "| wc -l)" >> logfile
dan saya mengharapkan hasil seperti
TIME: 10:32:30 12
TIME: 10:32:40 18
TIME: 10:32:50 2
untuk disimpan dalam file log. Namun, ketika file log memiliki karakter yang tidak patut dicetak di. Bagaimana cara mendapatkan output seperti ini dari perintah li
ps
. Saya akan mengubah jawaban saya.Ini dapat dengan mudah dilakukan menggunakan
watch
juga tanpa menggunakan skrip apa pun.watch -t -n 10 "(date '+TIME:%H:%M:%S' ; ps aux | grep "pattern" | wc -l) | tee -a logfile"
sumber
tee -a logfile
dalam arg yang dilewatiwatch
. Sangat bersih, terima kasih.watch
dimaksudkan untuk output ke tampilan. Jika Anda hanya ingin menjalankan perintah setiap X detik maka Anda hanya perlu menggunakan loop penundaan untuk itu.sumber
watch adalah program ncurses, dan dirancang untuk dijalankan di jendela konsol (tidak dialihkan), itulah sebabnya ia membuat banyak karakter yang tidak dapat dicetak (itu adalah karakter kontrol yang mengelola dan memindahkan kursor untuk menggambar ulang layar).
Anda dapat mencoba memindahkan perintah tanggal / grep ke dalam skrip, dan kemudian memanggil skrip tersebut dari cronjob.
sumber
Ok, jadi saya memasukkannya ke dalam skrip dan memiliki kode berikut:
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. Tapi agar mudah dibaca, saya memecahkannya. Outputnya terlihat seperti:
sumber
Berikut adalah contoh saya hanya perlu untuk
watch
padaps axf
dengan stempel waktu di bagian bawah seluruh output. Saya menonton ketika Apache gagal. Saya harus menyalurkan ketee
untuk setiap perintah,ps
dandate
.watch 'ps axf | grep --line-buffered "[a]pache2"| tee --append logfile-apache-issue.log; date '+TIME:%H:%M:%S' | tee --append logfile-apache-issue.log'
Contoh Output
tail --follow logfile-apache-issue.log
pada file yang dihasilkan.sumber