гнуwatch
очень полезный инструмент для проверки выходных данных программы: он запускает программу и каждые 2 секунды отображает выходные данные на весь экран.
Иногда я не хочу, чтобы предыдущий вывод был стерт, а чтобы он был напечатан построчно с отметкой времени. Для этого я использую скрипты bash, например:
while true;
do echo -n "`date` ";
ssh ubuntu@server -o ConnectTimeout=1 "uptime" ;
sleep 1;
done
Есть лиwatch
-подобный инструмент, который может выполнить команду и отобразить ее вывод с меткой времени в строке, не стирая предыдущий вывод?
решение1
Я бы сказал, что вы нашли это в простых циклах, но отсюда можно сделать еще несколько вещей:
Напишите функцию, которая справится с этим за вас.
function uberwatch {
# call: uberwatch <interval> <command>
while true; do
"${@:2}";
sleep $1;
done
}
Вы можете разместить это где-нибудь около вашего ~/.bashrc
.
Запишите вывод в файл, но продолжайте просмотр с помощьюwatch
watch "command | tee -a watchlog.log"
Вы по-прежнему будете видеть только последний прогон, но при необходимости сможете просмотреть исторический журнал.
решение2
while true; do date >> /vat/tmp/watch.log; sleep 600; ls -l filename >> /var/tmp/watch.log; done
Мне нравится цикл while, упомянутый Артемом выше, но я хотел сохранить данные в файле, чтобы иметь возможность проанализировать их, когда вернусь, поэтому добавил перенаправления в файл. В моем случае просмотр файла каждые 10 минут и ls -l для размера файла
-Джей
решение3
Мне нравится Олимодифицированное watch
решение, но мне нравится идея просмотра журнала в реальном времени, а не поискать в нем информацию позже.
Вот идея:
watch 'echo $(date && command 2>&1 | tail -n 1) >> watchlog.log && cat watchlog.log | tail'
Объяснение:
echo
избегает новой строки междуdate
иcommand
.>>
добавляет к файлу то же самое,| tee -a
но без дублированияwatch
вывода.2>&1
объединяет stderr со stdout, чтобы убедиться, что вы видите все, включая ошибки.| tail -n 1
ограничивает вывод последней строкой (содержащей выводdate
) для более чистого просмотра в реальном времени. Это может быть или не быть вашим желанием относительно содержимого файла журнала.