Как переписать предыдущий вывод в bash - PullRequest
0 голосов
/ 20 апреля 2020

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

tmp=$(ps -e -eo pid,cmd,%mem,%cpu,user --sort=-%cpu | head -n 11)
printf "\n%s\n" "$tmp[pid]"

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

Есть ли способ полностью стереть предыдущий вывод и записать оттуда?

1 Ответ

0 голосов
/ 20 апреля 2020

Да, вы можете очистить часть экрана перед каждой итерацией (см. https://unix.stackexchange.com/questions/297502/clear-half-of-the-screen-from-the-command-line), но функция watch сделает это за вас. Попробуйте:

watch -n 1 "ps -e -eo pid,cmd,%mem,%cpu,user --sort=-%cpu | head -n 11"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...