Как сохранить в файл вывод консоли — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
м
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
= Как сохранить в файл вывод консоли =
+
Если вывод в (графическую) консоль не очень объёмный, можно просто выделить мышкой кусок и вставить его в сообщение щелчком средней кнопки. В противном случае можно использовать перенаправление вывода в файл через "воронку", например так:
 +
some_command parameters >logfile.txt
  
Если вывод в (графическую) консоль не очень объёмный, можно просто выдельть мышкой кусок и вставить его в сообщение щелчком средней кнопки. В противном случае можно использовать перенаправление вывода в файл через "воронку", например так:
+
Если файл существует он будет перезаписан. Чтобы дополнить его нужно вместо '''>''' использовать '''>>'''.
  
some_command parameters > logfile.txt
 
  
 +
----------
  
 
Чтобы видеть результат выполнения на экране, и одновременно писать в файл, можно воспользоваться командой {{Программа|tee}}:
 
Чтобы видеть результат выполнения на экране, и одновременно писать в файл, можно воспользоваться командой {{Программа|tee}}:
 
 
  some_command parameters | tee -a logfile.txt
 
  some_command parameters | tee -a logfile.txt
  
 +
 +
----------
  
 
Команда {{cmd|setterm -dump}} создает "слепок" буфера текущей виртуальной консоли в виде простого текстового файла с именем по умолчанию - screen.dump. В качестве ее аргумента можно использовать номер консоли, для которой требуется сделать дамп. А добавление опции {{cmd|-file имя_файла}} перенаправит этот дамп в файл с указанным именем. Опция же {{cmd|-append}} присоединит новый дамп к уже существующему файлу - "умолчальному" screen.dump или поименованному опцией {{cmd|-file}}.
 
Команда {{cmd|setterm -dump}} создает "слепок" буфера текущей виртуальной консоли в виде простого текстового файла с именем по умолчанию - screen.dump. В качестве ее аргумента можно использовать номер консоли, для которой требуется сделать дамп. А добавление опции {{cmd|-file имя_файла}} перенаправит этот дамп в файл с указанным именем. Опция же {{cmd|-append}} присоединит новый дамп к уже существующему файлу - "умолчальному" screen.dump или поименованному опцией {{cmd|-file}}.
  
 
Т.е. после использования команды, например
 
Т.е. после использования команды, например
 
 
  setterm -dump -file /root/screenlog
 
  setterm -dump -file /root/screenlog
  
 
соответственно в файле {{Источник|/root/screenlog}} будет содержимое одной страницы консоли.
 
соответственно в файле {{Источник|/root/screenlog}} будет содержимое одной страницы консоли.
  
Нашёл еще одно решение для копирования/вставки текста в текстовой консоли без мыши. Также можно копировать текст из буфера прокрутки (т.е. всё что на экране и выше за экраном). Чтобы лучше разобраться, читайте о консольном менеджере окон {{Программа|screen}}. Также может пригодиться увеличить размер буфера прокрутки.
+
 
 +
----------
 +
 
 +
Также можно копировать текст из буфера прокрутки (т.е. всё что на экране и выше за экраном). Чтобы лучше разобраться, читайте о консольном менеджере окон {{Программа|screen}}. Также может пригодиться увеличить размер буфера прокрутки.
  
 
1) Запускаем {{Программа|screen}}
 
1) Запускаем {{Программа|screen}}
Строка 38: Строка 42:
  
 
8) Ctrl+A, Ctrl+0 - вернуться обратно в нулевое окно.
 
8) Ctrl+A, Ctrl+0 - вернуться обратно в нулевое окно.
 +
 +
 +
----------
 +
 +
Можно заюзать {{Программа|script}}.
 +
 +
Делаем
 +
script --timing=terminal-timing.log terminal.log
 +
# в terminal.log запишется все что будет выполнено в терминале
 +
# в terminal-timing.log запишется время когда и сколько команды выполнялись. Этот файл нужен чтобы потом была возможность воспроизвести лог с помощью scriptreplay.
 +
 +
когда все нужные команды выполнены
 +
exit
 +
 +
Все записано в '''terminal.log'''
 +
 +
Чтобы воспроизвести лог выполняем
 +
scriptreplay terminal-timing.log terminal.log 4
 +
# 4 в конце команды означает скорость воспроизведения. 1 - оригинальная (можно не указывать), 2 - в два раза быстрее и т.д.
 +
 +
 +
----------
 +
 +
В {{Программа|konsole/yakuake}} вывод можно сохранить комбинацией '''ctrl+shift+s'''. Буфер этих программ можно изменить в настройках (по умолчанию, емнип, 1000 строк).
 +
 +
 +
----------
 +
 +
В FreeBSD есть замечательная утилита watch, которая позволяет мониторить терминалы, но как оказалось, в Linux она выполняет совсем иные функции =\ Стоит погуглить на эту тему, чего-нть да найдется...
  
  
Строка 65: Строка 98:
 
Кстати, 128 - это килобайт. Автор статьи утверждает, что больше установить нельзя. Я и не пробовал.
 
Кстати, 128 - это килобайт. Автор статьи утверждает, что больше установить нельзя. Я и не пробовал.
  
Можно заюзать {{Программа|script}}.
+
{{Навигация|Разделы|[[Программы ROSA Linux]] - [[Рецепты/howto]]}}
 
+
[[Категория:HOWTO]]
Делаем
+
 
+
script filename.log
+
когда все нужные команды выполнены -
+
 
+
exit
+
.
+
Все записано в filename.log
+
 
+
В FreeBSD есть замечательная утилита watch, которая позволяет мониторить терминалы, но как оказалось, в Linux она выполняет совсем иные функции =\ Стоит погуглить на эту тему, чего-нть да найдется...
+

Текущая версия на 14:44, 12 ноября 2022

Если вывод в (графическую) консоль не очень объёмный, можно просто выделить мышкой кусок и вставить его в сообщение щелчком средней кнопки. В противном случае можно использовать перенаправление вывода в файл через "воронку", например так:

some_command parameters >logfile.txt

Если файл существует он будет перезаписан. Чтобы дополнить его нужно вместо > использовать >>.



Чтобы видеть результат выполнения на экране, и одновременно писать в файл, можно воспользоваться командой tee:

some_command parameters | tee -a logfile.txt



Команда setterm -dump создает "слепок" буфера текущей виртуальной консоли в виде простого текстового файла с именем по умолчанию - screen.dump. В качестве ее аргумента можно использовать номер консоли, для которой требуется сделать дамп. А добавление опции -file имя_файла перенаправит этот дамп в файл с указанным именем. Опция же -append присоединит новый дамп к уже существующему файлу - "умолчальному" screen.dump или поименованному опцией -file.

Т.е. после использования команды, например

setterm -dump -file /root/screenlog

соответственно в файле /root/screenlog будет содержимое одной страницы консоли.



Также можно копировать текст из буфера прокрутки (т.е. всё что на экране и выше за экраном). Чтобы лучше разобраться, читайте о консольном менеджере окон screen. Также может пригодиться увеличить размер буфера прокрутки.

1) Запускаем screen

screen

2) Нажимаем Enter. Всё. Мы находимся в нулевом окне консоли.

3) Выполняем нужные команды, вывод которых необходимо скопировать.

4) Ctrl+A, Ctrl+[ - мы в режиме копирования. Ставим курсор на начало выделения, жмём пробел, потом ставим курсор на конец выделения, жмём пробел. Текст скопирован в буфер.

5) Ctrl+A, с - мы создали новое 1-е окно.

6) Ctrl+A, 1 - мы перешли на 1-е окно.

7) Открываем любой (?) текстовый редактор (я пробовал в mc), и жмём Ctrl+A, Ctrl+] - текст вставлен. Сохраняем.

8) Ctrl+A, Ctrl+0 - вернуться обратно в нулевое окно.



Можно заюзать script.

Делаем

script --timing=terminal-timing.log terminal.log
# в terminal.log запишется все что будет выполнено в терминале
# в terminal-timing.log запишется время когда и сколько команды выполнялись. Этот файл нужен чтобы потом была возможность воспроизвести лог с помощью scriptreplay.

когда все нужные команды выполнены

exit

Все записано в terminal.log

Чтобы воспроизвести лог выполняем

scriptreplay terminal-timing.log terminal.log 4
# 4 в конце команды означает скорость воспроизведения. 1 - оригинальная (можно не указывать), 2 - в два раза быстрее и т.д.



В konsole/yakuake вывод можно сохранить комбинацией ctrl+shift+s. Буфер этих программ можно изменить в настройках (по умолчанию, емнип, 1000 строк).



В FreeBSD есть замечательная утилита watch, которая позволяет мониторить терминалы, но как оказалось, в Linux она выполняет совсем иные функции =\ Стоит погуглить на эту тему, чего-нть да найдется...


Как увеличить буфер обратной прокрутки?

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

И такое средство есть, а называется оно framebuffer console, для краткости fbcon. Это устройство имеет файл документации fbcon.txt; если вы устанавливали документацию к ядру, то он у вас есть. Выискивайте его где-то в районе /usr/share ветви (я не могу указать точный путь из-за разницы в дистрибутивах).

На этом месте прошу прощения: мы должны сделать небольшое отступление и немного поговорить о видеобуфере (framebuffer).

Видеобуфер - это буфер между дисплеем и видеоадаптером. Его прелесть в том, что им можно манипулировать: он позволяет трюки, которые не прошли бы, будь адаптер связан напрямую с дисплеем.

Один из таких трюков связан с буфером прокрутки; оказывается, вы можете "попросить" видеобуфер выделить больше памяти буферу прокрутки. Достигается это через загрузочные параметры ядра. Сначала вы требуете framebuffer (видеобуфер); Затем запрашиваете больший буфер прокрутки.

Нижеследующий пример касается GRUB, но может быть легко адаптирован к LILO. В файле настройки GRUB - menu.lst- найдите соответствующую ядру строчку, и затем: Удалите опцию vga=xxx, если таковая присутствует. Добавьте опцию video=vesabf или то, что соответствует вашему "железу". Добавьте опцию fbcon=scrollback:128. После этой процедуры, строка параметров ядра должна выглядеть приблизительно так:

kernel /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128

Спрашивается, зачем удалять опцию vga=xxx? Из-за возможных конфликтов с видео-опцией. На своем ATI адаптере, я не могу изменить буфер прокрутки, если vga=xxx присутствует в списке. Возможно в вашем случае это не так. Если вышеперечисленные опции работают - хорошо; но что, если вы хотите увеличить число строк, или установить более мелкий шрифт на экране? Вы всегда делали это при помощи опции vga=xxx - а она-то и исчезла. Не переживайте - то же самое может быть достигнуто изменением параметров fbcon, как описано в файле fbcon.txt (но не описано в данной статье).

С опцией fbcon=scrollback:128 у меня буфер прокрутки увеличился до 17 экранов (35 раз Shift+PgUp по полэкрана). Кстати, 128 - это килобайт. Автор статьи утверждает, что больше установить нельзя. Я и не пробовал.

Разделы