Как сохранить в файл вывод консоли — различия между версиями
Noname (обсуждение | вклад) м |
Noname (обсуждение | вклад) м |
||
Строка 4: | Строка 4: | ||
Если файл существует он будет перезаписан. Чтобы дополнить его нужно вместо '''>''' использовать '''>>'''. | Если файл существует он будет перезаписан. Чтобы дополнить его нужно вместо '''>''' использовать '''>>'''. | ||
+ | |||
+ | ---------- | ||
Чтобы видеть результат выполнения на экране, и одновременно писать в файл, можно воспользоваться командой {{Программа|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}}. | ||
Строка 16: | Строка 20: | ||
соответственно в файле {{Источник|/root/screenlog}} будет содержимое одной страницы консоли. | соответственно в файле {{Источник|/root/screenlog}} будет содержимое одной страницы консоли. | ||
+ | |||
+ | ---------- | ||
Также можно копировать текст из буфера прокрутки (т.е. всё что на экране и выше за экраном). Чтобы лучше разобраться, читайте о консольном менеджере окон {{Программа|screen}}. Также может пригодиться увеличить размер буфера прокрутки. | Также можно копировать текст из буфера прокрутки (т.е. всё что на экране и выше за экраном). Чтобы лучше разобраться, читайте о консольном менеджере окон {{Программа|screen}}. Также может пригодиться увеличить размер буфера прокрутки. | ||
Строка 37: | Строка 43: | ||
8) Ctrl+A, Ctrl+0 - вернуться обратно в нулевое окно. | 8) Ctrl+A, Ctrl+0 - вернуться обратно в нулевое окно. | ||
+ | |||
+ | ---------- | ||
Можно заюзать {{Программа|script}}. | Можно заюзать {{Программа|script}}. | ||
Строка 54: | Строка 62: | ||
# 4 в конце команды означает скорость воспроизведения. 1 - оригинальная (можно не указывать), 2 - в два раза быстрее и т.д. | # 4 в конце команды означает скорость воспроизведения. 1 - оригинальная (можно не указывать), 2 - в два раза быстрее и т.д. | ||
+ | |||
+ | ---------- | ||
В {{Программа|konsole/yakuake}} вывод можно сохранить комбинацией '''ctrl+shift+s'''. Буфер этих программ можно изменить в настройках (по умолчанию, емнип, 1000 строк). | В {{Программа|konsole/yakuake}} вывод можно сохранить комбинацией '''ctrl+shift+s'''. Буфер этих программ можно изменить в настройках (по умолчанию, емнип, 1000 строк). | ||
+ | |||
+ | ---------- | ||
В FreeBSD есть замечательная утилита watch, которая позволяет мониторить терминалы, но как оказалось, в Linux она выполняет совсем иные функции =\ Стоит погуглить на эту тему, чего-нть да найдется... | В 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 - это килобайт. Автор статьи утверждает, что больше установить нельзя. Я и не пробовал.