Это - просто более короткая версия другого while+sleep
ответы при выполнении этого вида задач часто как распорядок дня, с помощью этого, сохраняют Вас от ненужных нажатий клавиш, и если Ваша командная строка начинает получать более долгое понимание, что этот немного легче. Но этот запускает со сна сначала.
Это обычно полезно, если необходимо следовать, что-то имеет короткий вывод как загрузка машины:
while sleep 1; do uptime; done
Я нашел этот поток названным: Bug#225549: имейте монитор часов stderr. Тот поток с 2008, но похоже, что более старые версии не поддерживают наблюдение ничего кроме STDOUT.
Таким образом, мы ограничены просто STDOUT. Что касается видимого существует много языка в info watch
и man watch
это заставляет меня думать, что Ваше наблюдение/предположение корректно.
выборка
watch runs command repeatedly, displaying its output (the first screen‐
full). This allows you to watch the program output change over time.
By default, the program is run every 2 seconds; use -n or --interval to
specify a different interval.
Также этот бит под ОШИБКАМИ:
BUGS
Upon terminal resize, the screen will not be correctly repainted until
the next scheduled update. All --differences highlighting is lost on
that update as well.
Если бы я должен был предположить, что думал бы, что они хранили видимые биты в буфере между выполнениями и затем анализировали просто те символы.
Я отладил это дальнейшее использование strace
и Вы видите watch
чтение вывода от ls
управляйте, таким образом, это внутренне отменяет изменение.
прежде чем я удалю m
файл
$ strace -o w.log watch -g 'ls -1'
read(3, "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\nw.lo"..., 4096) = 34
close(3) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
munmap(0x7f4da83af000, 4096) = 0
wait4(31011, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 31011
rt_sigaction(SIGTSTP, {SIG_IGN, [], SA_RESTORER|SA_RESTART, 0x7f4da79b94a0}, {0x7f4da7f81ee0, [], SA_RESTORER|SA_RESTART, 0x7f4da79b94a0}, 8) = 0
write(1, "\33[H\33[2JEvery 2.0s: ls -1\33[1;140H"..., 119) = 119
rt_sigaction(SIGTSTP, {0x7f4da7f81ee0, [], SA_RESTORER|SA_RESTART, 0x7f4da79b94a0}, NULL, 8) = 0
nanosleep({2, 0}, NULL) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3519, ...}) = 0
pipe([3, 4]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f4da839f9d0) = 31014
close(4) = 0
fcntl(3, F_GETFL) = 0 (flags O_RDONLY)
fstat(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4da83af000
lseek(3, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
read(3, "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\nw.lo"..., 4096) = 34
close(3) = 0
munmap(0x7f4da83af000, 4096) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
после m
файл удален
--- SIGCHLD (Child exited) @ 0 (0) ---
rt_sigaction(SIGTSTP, {SIG_IGN, [], SA_RESTORER|SA_RESTART, 0x7f4da79b94a0}, {0x7f4da7f81ee0, [], SA_RESTORER|SA_RESTART, 0x7f4da79b94a0}, 8) = 0
poll([{fd=0, events=POLLIN}], 1, 0) = 0 (Timeout)
poll([{fd=0, events=POLLIN}], 1, 0) = 0 (Timeout)
write(1, "\33[1;158H8\33[11;163H", 18) = 18
rt_sigaction(SIGTSTP, {0x7f4da7f81ee0, [], SA_RESTORER|SA_RESTART, 0x7f4da79b94a0}, NULL, 8) = 0
nanosleep({2, 0}, NULL) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3519, ...}) = 0
pipe([3, 4]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f4da839f9d0) = 31028
close(4) = 0
fcntl(3, F_GETFL) = 0 (flags O_RDONLY)
fstat(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4da83af000
lseek(3, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
read(3, "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nn\nw.log\n", 4096) = 32
close(3) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
munmap(0x7f4da83af000, 4096) = 0
wait4(31028, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 31028
Я ожидаю, что это выйдет, если файл будет добавлен или удален
Я вполне уверен, Вы после inotify-инструментов.
В моей странице справочника для часов, от procps-ng, говорится
следите за командой выполнений неоднократно, отображая ее вывод и ошибки (первое экранное).
watch
вести себя как OP и выход с изменением.
– slm♦
14.11.2013, 09:06
watch
ведет себя этот путь. Он знает о inotify.
– slm♦
14.11.2013, 09:34
watch -g foo; echo "Something changed!"
. Это кажется странно наносящей вред ошибкой в такой установленной программе. поблагодарите Вас – terdon♦ 14.11.2013, 03:50-g
переключитесь, но я попробовал его на Ubuntu, и это ведет себя то же. – slm♦ 14.11.2013, 04:19