Как вывести итерации / прогресс за время или цикл просмотра на каждом интервале? - PullRequest
0 голосов
/ 24 августа 2018

Я запускаю команду в SSH, которую я установил в цикле, используя watch или while.

Код:

while sleep SECONDS; do command; done

или

watch -n SECONDS command

Пример:

while sleep 5; do ls; done

В этом примере это будет означать, что он будет запускаться ls каждые 5 секунд до тех пор, пока он не будет завершен нажатием комбинации клавиш CTRL + C илитерминал закрыт.

В моем случае использования я использую другую команду (которая не имеет никакого вывода ssh), но результаты остаются теми же.

Обе эти команды будутничего не отображается (в случае, если команда не вызывает вывод в отличие от ls), но команда действительно выполняется каждые x секунд.

Дело в том, что я хочу просмотреть выводпри каждом выполнении.

Например,

root@server:~ # while sleep 5; do <command>; done
.. executed at 00:00:05
.. executed at 00:00:10
.. executed at 00:00:15
.. executed at 00:00:20
.. executed at 00:00:25
.. executed at 00:00:30

и т. д. и т. п. каждые x секунд после выполнения команды до ее остановки.

В идеалеЯ хотел бы напечатать текст, как указано выше, включая текущее время.

Я могу 'просто добавьте в него printf, потому что я пытался это сделать.

# this doesn't work
while sleep 5; do <command> printf "..."; done

, где ... - вывод, который я хочу сказать при каждом выполнении.Проблема - да, это печатает, но это портит мою команду.Я пробовал printf и до команды, но затем команда не выполняется.

Как я могу получить ее, чтобы получить желаемый вывод, чтобы я не просто видел пустую страницу?За 5 секунд это легко посчитать.Но когда я добираюсь до более высоких времен, как каждые 120 секунд, гораздо сложнее отследить, когда он выполняется.Вывод со временем выполнения каждого цикла был бы чрезвычайно полезен.

Кстати, я на CentOS 6.

...