Есть ли команда Unix для записи изменений в вывод другой команды?

У меня длительная операция, которая влияет на состояние. Это состояние отображается при запуске определенной команды, скажем, showst,

Я хочу видеть есть журнал всех возможных выходов showst будет отображаться во время этой длительной работы.

Для короткой операции я бы использовал

watch -n0.1 showst

И просто смотрел на терминал, глядя на то, что происходит. Но если операция длится час, это не очень практично. Я хочу иметь журнал, который сказал бы мне, что в определенное время showst выход изменился на это. А потом все изменилось.

Есть ли команда, которая может мне помочь?


Изменить, чтобы добавить немного разъяснений.

Вот конкретный пример того, что я хотел бы увидеть. Допустим, операция длится час. showst выходы A за первые полчаса, затем B в течение 10 минут, затем переключается на A снова.

Я хочу увидеть журнал, похожий на этот:

2016-08-19 12:00: A
2016-08-19 12:30: B
2016-08-19 12:40: A

Было бы здорово, если A а также B может быть многострочным.

Это вроде как watch --differences можно сделать на терминале, если вы сидите и смотрите, но я хочу, чтобы в журнале.

1 ответ

Я не знаю о выделенной команде, но я бы написал что-то вроде этого:

(while true; do sleep 0.1; showst; done) | uniq

Примечание: реализации сна в Linux обычно поддерживают такие плавающие аргументы, но если вам нужно переносимое решение, вам следует использовать там целочисленный аргумент, который ограничивает пул до одной секунды, или вообще не спит, что будет сильно использовать ваш процессор.

Смотрите также справочные страницы сна и уникальности.

Другие вопросы по тегам