Saya biasanya pengguna watch
utilitas linux untuk menonton output dari suatu perintah berulang kali setiap n detik, seperti diwatch df -h /some_volume/
Tapi sepertinya saya tidak bisa menggunakan watch
dengan serangkaian perintah pipa seperti:
$ watch ls -ltr|tail -n 1
Jika saya melakukan itu, saya watch
benar-benar menonton ls -ltr
dan output sedang diteruskan tail -n 1
yang tidak menghasilkan apa-apa.
Jika saya coba ini:
$ watch (ls -ltr|tail -n 1)
saya mendapat
$ watch: syntax error near unexpected token `ls'
Dan salah satu dari yang berikut ini gagal karena beberapa alasan:
$ watch <(ls -ltr|tail -n 1)
$ watch < <(ls -ltr|tail -n 1)
$ watch $(ls -ltr|tail -n 1)
$ watch `ls -ltr|tail -n 1)`
Dan akhirnya jika melakukan ini:
$ watch echo $(ls -ltr|tail -n 1)
Saya melihat tidak ada perubahan dalam output pada interval yang diberikan karena perintah di dalam $()
dijalankan hanya sekali dan string output yang dihasilkan selalu dicetak ("diawasi") sebagai literal.
Jadi, bagaimana cara membuat watch
perintah bekerja dengan rantai perintah pipa [selain yang menempatkannya di dalam skrip]?
man watch
dan gulir ke bawah ke contoh ...Jawaban:
sumber
watch sh -c 'command | etc'
terutama melihat pendekatan yang dicoba dalam pertanyaan.mari kita pipa dan jalankan berturut-turut.
sumber
-n 1
untuk?Jika Anda ingin membuat daftar semua file dalam subdirektori juga, Anda dapat menggunakan perintah find dengan opsi exec.
watch
akan memperbarui setiap 30 detik danfind
akan mencari semua file * .log dalam direktori saat ini (termasuk subdirektori) dan akan mencetak nama file dan 10 baris terakhir mereka:sumber