Apakah watch
hanya memonitor output perintah yang terlihat? Katakan saya di direktori dengan konten berikut:
$ ls
a b c d e f g h i j k l m n
Jika saya menjalankan, watch -g ls -1
saya berharap untuk keluar jika file ditambahkan atau dihapus. Apa yang sebenarnya terjadi adalah bahwa ia keluar hanya jika file tersebut terlihat di output terminal watch
:
$ watch -g ls -1
Every 2.0s: ls -1 Wed Nov 13 16:35:03 2013
a
b
c
d
e
f
Menghapus file m
, yang tidak terlihat karena ukuran terminal saya, tidak melakukan apa-apa. Menghapus file yang terlihat, katakanlah d
, menyebabkan watch
keluar seperti yang diharapkan.
The -g
flag dijelaskan thusly di saya man
halaman:
-g, --chgexit
Exit when the output of command changes.
Apa yang sedang terjadi? Apakah ini normal? Bagaimana saya bisa menggunakan watch
untuk perintah dengan output panjang? Saya menggunakan watch from procps-ng 3.3.4
yang diinstal dari repo Debian.
-g
pilihan yang haruswatch
dilakukan? Saya tidak menemukannya dalam versi sayawatch
Jawaban:
Saya menemukan utas ini berjudul: Bug # 225549: have watch monitor stderr . Utas itu dari 2008, tetapi sepertinya versi yang lebih lama tidak mendukung tontonan selain STDOUT.
Jadi kita terbatas hanya STDOUT. Adapun yang terlihat ada banyak bahasa di dalamnya
info watch
danman watch
itu membuat saya berpikir pengamatan / asumsi Anda benar.kutipan
Juga bit ini di bawah BUGS:
Jika saya harus menebak saya akan berpikir mereka menyimpan bit yang terlihat dalam buffer di antara run, dan kemudian menganalisis hanya karakter tersebut.
EDIT # 1
Saya memperdebatkan ini menggunakan lebih lanjut
strace
dan Anda dapat melihatwatch
membaca output darils
perintah sehingga secara internal menjatuhkan perubahan.sebelum saya menghapus
m
filesetelah
m
file dihapussumber
watch -g foo; echo "Something changed!"
. Tampaknya bug yang melumpuhkan aneh dalam program yang didirikan.-g
saklar tetapi saya mencobanya di Ubuntu dan berperilaku sama.Saya cukup yakin Anda mencari alat inotify .
Halaman manual saya untuk menonton , dari procps-ng , mengatakan
sumber
watch
berperilaku sebagai OP, dan keluar dengan perubahan.watch
berperilaku seperti ini. Dia tahu tentang tidak mengizinkan.