Раньше я работал в компании, у которой была настроенная оболочка для управления одним из их продуктов, работавшим в Linux, и я стараюсь воспроизвести ключевую функцию этой оболочки.
Вся работа выполнялась в фоновом режиме, и вывод из журнала отображался всем подключенным пользователям.
Журнал будет в фоновом режиме к вашей оболочке, и строка подсказки всегда будет идеально внизу.
Например,
Log line 1
Log line 2
Log line 3
![ROOT@PRODUCT51-LIVE]:~/ #
Я попытался сделать это с помощью bash, чтобы запустить отдельный хвост в файле .bashrc пользователей, но когда вывод команды отправляется на стандартный вывод - он появляется в приглашении bash, например
![ROOT@PRODUCT51-LIVE]:~/ #Log line 1
Log line 2
Log line 3
И пользователю придется нажать клавишу ввода или CtrlCдля получения чистой строки подсказки.
У меня нет идей, как заставить приглашение всегда переходить к нижней части вывода, и я думаю, что использую неправильную терминологию, чтобы найти что-то в Google, потому что мне не повезло - кто-нибудь знает, как это сделать с баш?
tail -f
выводом, приглашением и выводом команды, когда вы вводите команду, которая имеет значительный объем вывода, особенно когда ваш фоновый процесс активно отправляет свой вывод?Ответы:
Следующее делает то, что вам нужно, без использования tmux или screen или других программ. Сохраняет подсказку внизу. Замените "/ var / log / cron" на любой файл, который вам нужен:
ключом к этому являются управляющие символы ANSI для терминала. В частности, оператор "\ e [x; y", который устанавливает новую прокручиваемую область. Таким образом, при чтении каждой строки файла журнала нижняя строка в окне исключается из области прокрутки, вставляется строка из файла журнала, а затем добавляется нижняя часть.
источник
Ответ: экран или tmux был использован
Я объясню, как вы можете настроить такое с помощью экрана
1) Установите экран, используя либо производные
apt-get install screen
Ubuntu / Debian, либоyum install screen
RedHat.2)
screen -S shell_and_logs
3) Затем нажмите Ctrl+ a, затем
S
(заглавная S).Появится горизонтальный экран
4) Нажмите Ctrl+, aпосле чего TAB
перейдите ко второму разделенному окну.
5) Создайте еще одно окно, чтобы получить командную строку, нажав Ctrl+ aотпустите клавиши, затем нажмите
c
6) Вы можете изменить размер второго виндо, нажав Ctrl+, aзатем набрав,
:resize
после чегоLines:
появится. Введите количество строк, которые вы хотите показать.7) Наконец, вы можете переключаться между окнами с помощью Ctrl+, aа затемTAB
источник
tail -F /var/log/messages &
еще один способ показывать вам сообщения, когда что-то меняется, например, когда обнаруживается сбой входа в систему или когда у какой-либо службы возникают проблемы. Это, однако, не идеально, так как это испортит вашу интерактивную оболочку.screen
иtmux
что можно сделать - например , некоторые из BSDs корабля сwindow
командой. Однако, если бы у меня был выбор, я бы порекомендовал это решение либо для пользовательской оболочки, либо для других доступных вариантов из-за ее гибкости. Это может быть не так прозрачно для конечного пользователя, но они действительно не будут знать разницу, и опытные пользователи / системные администраторы смогут использовать дополнительную гибкость, предлагаемуюscreen
.t=$(mktemp); printf '%s\n' 'screen tail -F /var/log/messages' split focus screen > "$t"; screen -S screenname -c "$t"
Поместите его в скрипт и запускайте его каждый раз, когда захотите. Спасибо Гейре за это на #bash @ irc.freenode.org